存在NAs时,将dplyr筛选器转换为基本R

存在NAs时,将dplyr筛选器转换为基本R,r,dplyr,R,Dplyr,我在dplyr中有一个正在工作的filter语句,我无法将其转换为base 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) x%过滤器(v1==“加拿大

我在dplyr中有一个正在工作的
filter
语句,我无法将其转换为base 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)
x%过滤器(v1==“加拿大”,v2%位于%3:5)
x[x$v1==“加拿大”&&x$v2%在%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

子集
位于基本R中,其功能类似于
dplyr
中的
filter
。子集是否足够,或者出于某种原因是否需要括号符号

> x <- data.frame(
+     v1 = c("USA", "Canada", "Mexico"),
+     v2 = c(NA, 1:5)
+ )
通过基本R/
子集

> subset(x, v1 == 'Canada' & v2 %in% 3:5)
      v1 v2
5 Canada  4

添加
&!is.na(x$v2)
Man,我认为
&&
是一个短圆圈,“本质上意味着
x&&y
意味着如果x为假,甚至不用计算y。类似的
x | | y
意味着如果x为真,甚至不要同时计算y,但显然我错了。谢谢,是的!但你不想在这里这样。您需要
TRUE
FALSE
语句的向量,每个观察值一个。如果在
R
需要向量时只提供一个
FALSE
语句,
R
将回收该向量。因此,对于每一行,您都会说
FALSE
,从而得到上述结果(无行)。
> x <- data.frame(
+     v1 = c("USA", "Canada", "Mexico"),
+     v2 = c(NA, 1:5)
+ )
> x %>% filter(v1=="Canada",v2 %in% 3:5)
      v1 v2
1 Canada  4
> subset(x, v1 == 'Canada' & v2 %in% 3:5)
      v1 v2
5 Canada  4