ProgramingTip

seq_along이 작동하지만 seq가 의도하지 않은 결과를 생성하는 경우의 예는 무엇입니까?

bestdevel 2020. 11. 17. 20:39
반응형

seq_along이 작동하지만 seq가 의도하지 않은 결과를 생성하는 경우의 예는 무엇입니까?


언제 효과 seq_along가 좋을지에 seq대한 좋은 예는 무엇입니까?

?seq우리 의 문서에서 :

인수 이름에 관계없이 첫 번째 인수의 클래스에서 디스패치합니다. 이는 의도하지 않은 결과를 초래할 수 있습니다. 하나의 인수 단로 호출하여 이것을 다음과 같이 along.with사용 seq_along하는 것이 좋습니다 . 경우이 에 사용하는 것이 훨씬 좋습니다 .


이것은 차이를 분명하게해야합니다. 기본적으로 seq()같은 역할을 seq_along() 제외하고 는 같은 역할을하는 경우에는 길이가 1 인 벡터를 통과 할 때 seq_len(). 이것이 한 번 당신을 물면 seq()다시 는 사용하지 않을 것입니다 !

a <- c(8, 9, 10)
b <- c(9, 10)
c <- 10

seq_along(a)
# [1] 1 2 3
seq_along(b)
# [1] 1 2
seq_along(c)
# [1] 1

seq(a)
# [1] 1 2 3
seq(b)
# [1] 1 2
seq(c)
# [1]  1  2  3  4  5  6  7  8  9 10

sample()유사하게 비정상적인 행동 보이는 것은 주목할 가치가 있습니다.

sample(a)
# [1] 10  8  9
sample(b)
# [1]  9 10
sample(c)
# [1]  8  7  9  3  4  1  6 10  2  5

seq에 대한 입력이 길이 1이면 seq과 사이 의 출력 seq_along이 달라집니다.

x <- 5
for(i in seq(x)){
    print(x[i])
}
#[1] 5
#[1] NA
#[1] NA
#[1] NA
#[1] NA

for(i in seq_along(x)){
    print(x[i])
}
#[1] 5

입력이 날짜 벡터 인 경우에도 차이가 있습니다.

x <- Sys.Date() + 1:5
seq(x)
#Error in seq.Date(x) : 'from' must be of length 1
seq_along(x)
#[1] 1 2 3 4 5

참고 URL : https://stackoverflow.com/questions/13732062/what-are-examples-of-when-seq-along-works-but-seq-produces-unintended-results

반응형