제목 자체 설명입니다. R이 선택/부분 집합에 대한 부울 값을 재활용하는 이유를 알고 싶습니다. "["
에 대한 설명서 Such vectors are recycled if necessary to match the corresponding extent. i, j
선택을위한 부울 색인을 재활용하기위한 이론적 근거
이 작업을 수행하면 어떤 이점이 있습니까? 아래에 언급 된 것처럼 생각할 수는 있지만 단점이 사용 용이성의 이점보다 클 수 있다고 생각합니다.
df<- data.frame(C1=1:10,c2=101:110)
class(unclass(df)[1]) # df is a list of two lists, each a column of df
df
df[1] # selects 1st list (ie, first column)
df[2]
# However, indices are recycled if we use Logical indices
df[TRUE] # selects both columns
df[c(T,T),] # recycled row indices
df[c(T,T,F),] # recycled row indices
df[FALSE]
# This can actually lead to inadvertent errors
# For example, this has only 7 index elements instead of 10,
# but it's quite possible to miss out on the fact that these are being recycled
df[c(T,F,T,T,F,F,F),]
내가 생각할 수있는이 재활용 기능 만 사용이 질문에 대한 컨텍스트가 어제 SO에서 본 또 다른 하나입니다
df[c(T,F),]
skipping alternate rows
했다. 누군가가 |
과 ||
사이의 차이 e를 지적 했으므로 나중에 삭제되었습니다. 나는 그들이 여기에서도 재활용을 다루고 있다는 것을 깨달았는지 궁금합니다. 하나가 조심해야이 성질의 다른 잘 알려진 함정
# An erronous use of && can land you in soup too
df [df$C1 >0 && df$c2 <102, ] #returns TRUE, will select all rows
이 있습니까?
오, 고마워요. 예, 물론 &&와 관련된 문제를 잘 이해하고 있습니다. 나는 왜 단일 값 색인이 전체 열을 반환했는지에 대해 언급하고있었습니다. 그리고 물론 재활용 사용의 편리 성도 느꼈습니다. 확실한. 그러나, 나도 내가 색인 생성에 오류를 만들었을 때 재활용으로 인해 그것을 깨닫지 못할지 궁금하게 만들었습니다. 대답의 마지막 부분은 정말로 저를 집에 때립니다. 그것은 '전통'또는 오히려 진화론 적 뿌리가 언어를 어떻게 형성했는지에 대한 파급 효과로 보인다. –
데이터 프레임의 행렬에 대한 인덱스 인 NA가 NA의 행 (또는 열)을 반환한다는 사실은 나를 괴롭히는 요인입니다. –
예, 다른 논리 상수입니다. 그리고 당신도 그것을 재활용 할 수 있습니다. 'some.matrix [NA, NA]' –