我有dplyr工作filter
聲明,我不能轉化爲基礎R翻譯dplyr濾波器基礎R當有來港
library(dplyr)
x <- data.frame(
v1 = c("USA", "Canada", "Mexico"),
v2 = c(NA, 1:5)
)
x %>% filter(v1=="Canada",v2 %in% 3:5)
x[x$v1=="Canada" && x$v2 %in% 3:5,]
任何幫助,將不勝感激。
我有dplyr工作filter
聲明,我不能轉化爲基礎R翻譯dplyr濾波器基礎R當有來港
library(dplyr)
x <- data.frame(
v1 = c("USA", "Canada", "Mexico"),
v2 = c(NA, 1:5)
)
x %>% filter(v1=="Canada",v2 %in% 3:5)
x[x$v1=="Canada" && x$v2 %in% 3:5,]
任何幫助,將不勝感激。
舉例說明:
library(dplyr)
x <- data.frame(
v1 = c("USA", "Canada", "Mexico"),
v2 = c(NA, 1:5)
)
# filter
x %>% filter(v1=="Canada",v2 %in% 3:5)
v1 v2
1 Canada 4
# your approach
x[x$v1=="Canada" && x$v2 %in% 3:5,]
v1 v2
<0 rows> (or 0-length row.names)
# second & removed
x[x$v1=="Canada" & x$v2 %in% 3:5,]
v1 v2
5 Canada 4
除了rowname,它給出了相同的結果。
看看這個例子就明白髮生了什麼之前,(從here採取)發生
-2:2 >= 0
[1] FALSE FALSE TRUE TRUE TRUE
-2:2 >= 0 & -2:2 <= 0
[1] FALSE FALSE TRUE FALSE FALSE
-2:2 >= 0 && -2:2 <= 0
[1] FALSE
在某些情況下,你可能會遇到的問題與NA
秒。那麼建議將邏輯陳述包裝到which
中。 filter
默認過濾掉NA
。例如。
# will include NA:
x[x$v2 > 3,]
v1 v2
NA <NA> NA
5 Canada 4
6 Mexico 5
# will exclude NA
x[which(x$v2 > 3),]
v1 v2
5 Canada 4
6 Mexico 5
男人,我認爲'&&'是短路的「,」本質上'x && y'意思是如果x是假的,甚至不會評估y。類似的x || y'表示如果x是真的,甚至都沒有評價y,但我顯然是非常錯誤的。謝謝 – Carl
嗯,這是!但你不想在這裏。你需要一個'TRUE'和'FALSE'語句的向量,每個觀察一個。如果你只在'R'需要一個向量時提供一個'FALSE'語句,'R'會回收它。因此,對於每一行你說'FALSE',因此你得到了上述結果(沒有行)。 – coffeinjunky
subset
是在基R,並且功能類似於在dplyr
filter
。子集是否足夠適合您,或者出於某種原因您是否需要括號符號?
> x <- data.frame(
+ v1 = c("USA", "Canada", "Mexico"),
+ v2 = c(NA, 1:5)
+)
通過dplyr
:
> x %>% filter(v1=="Canada",v2 %in% 3:5)
v1 v2
1 Canada 4
通過基礎R/subset
:
> subset(x, v1 == 'Canada' & v2 %in% 3:5)
v1 v2
5 Canada 4
加上'&! is.na(x $ v2)' –