R 3.1.2
, dplyr 0.4.0
을 사용합니다.dplyr에서 필터 내부의 필터를 사용하면 예기치 않은 결과가 발생합니다.
나는 filter
내에서 filter
을 사용하려고하는데, 이는 매우 간단하게 들리며 왜 내가 기대 한 결과를주지 않는지 이해할 수 없습니다. 이것은 약 6 개월 전에 작성한 코드이며 제대로 작동하는지 확신 할 수 있으므로 업데이트 된 R 버전 또는 dplyr
또는 다른 종속성으로 인해 작업이 중단됩니다. 어쨌든, 다음은 df2의 열에서 filter
으로 발견되는 조건을 기반으로 df1의 행을 필터링하는 간단한 코드입니다.
df1 <- data.frame(x = c("A", "B"), stringsAsFactors = FALSE)
df2 <- data.frame(x = "A", y = TRUE, stringsAsFactors = FALSE)
dplyr::filter(df1, x %in% (dplyr::filter(df2, y)$x))
나는이
df1
의 첫 번째 행을 표시 할 것으로 예상, 대신 내가의 만들 모르겠어요
# [1] x
# <0 rows> (or 0-length row.names)
를 얻을. 벡터와 빈 data.frame을 반환하는 이유는 무엇입니까? 나는 두 개의 문에 필터 코드를 깰 경우
, 나는 내가 기대하는 것을 얻을이 문제가 발생하는 이유
xval <- dplyr::filter(df2, y)$x
dplyr::filter(df1, x %in% xval)
# x
# 1 A
사람이 저를 알아내는 데 도움이 할 수
? 나는 그것이 버그라고 말하는 것이 아니라 그것을 이해하지 못한다.
난 정말 * 이유 *하지만'필터 (DF1, X %에서 % (필터를 설명 할 수 없다 (df2, y) %> %. $ x))'dplyr' 문법의 관점에서 더 적절하게 보이고, 원하는 결과물을 출력합니다. –
그래, 나는 그걸 알아 차렸지만 좀 더 장황하고 작은 비트로 보인다. 덜 읽을 수있는 (논쟁의 여지가 있지만).그러나 나는 당신의 대답을 받아 들일 것입니다. 당신은 또한 제가 항상 가지고있는 또 다른 질문에 대답합니다 - 열을 추출하는 적절한 dplyr 방법은 무엇입니까? 때로'filter (df2, y) %> % select (x) %> % as.character' 또는'filter (df2, y) %> % select (x) %> % first'를 사용했습니다. –
@RichardScriven, 당신이 dplyr 0.4.0을 사용하고 있다고 가정합니까? 0.3.0.2에서는 분명히 작동하지 않습니다. 또 다른 옵션은'filter (df2, y) %> % select (x) %> % inner_join (df1)' –