Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 不选择NA值_R_Select_Boolean_Conditional - Fatal编程技术网

R 不选择NA值

R 不选择NA值,r,select,boolean,conditional,R,Select,Boolean,Conditional,这是R中的一个小麻烦,我想看看是否有一些默认情况 我创建以下向量: x <- c(1, 2, 1, NA) 现在,当您看到x2中的值时: > x2 [1] 1 1 NA 似乎R默认包含NA值,而不管条件如何。我希望这样,在默认情况下,R从条件中排除NA值,因为NA确实不满足条件x==1 我知道complete.cases函数的用法如下: x2 <- x[complete.cases(x == 1)] 只需这样做:x2您需要哪一个 > x <- c(1, 2

这是R中的一个小麻烦,我想看看是否有一些默认情况

我创建以下向量:

x <- c(1, 2, 1, NA)
现在,当您看到x2中的值时:

> x2
[1]  1  1 NA
似乎R默认包含NA值,而不管条件如何。我希望这样,在默认情况下,R从条件中排除NA值,因为NA确实不满足条件x==1

我知道complete.cases函数的用法如下:

x2 <- x[complete.cases(x == 1)]
只需这样做:x2您需要哪一个

> x <- c(1, 2, 1, NA)
> x[which(x==1)]
[1] 1 1

我看不到返回包含等于1的元素的向量的函数值,因为所有这些元素都是1。相反,在生产环境中,您最有可能返回一个布尔向量,其中TRUE表示值匹配,FALSE表示值不匹配

如果希望NA值因不匹配而显示为FALSE,则可以进行比较,并简单地将这些NA值替换为FALSE:

x <- c(1, 2, 1, NA)
x2 <- x == 1
x2[is.na(x2)] <- FALSE
> x2
[1]  TRUE FALSE  TRUE FALSE

你期望的输出是什么?如果没有这些,我想不出确切的答案。对不起,我想我已经说清楚了。进行编辑。我可以这样做,但这是一个额外的条件。但有没有办法告诉R,我只希望在x==1的情况下,不允许NAs通过?同样,这是一个肛门问题,因为我可以把它包装成complete.cases,但我觉得这样做很乏味。在这里说明显而易见的问题,但是:您可以输入任意值,但仍然可以得到所需的输出:x[complete.casesx==999]甚至x[complete.casesx==gadzooks]。也就是说,您希望的输出是1对1,is.na.x2有一个类似的选项:x[x%in%1]不完全是我想要的,但它似乎是一个有效的单行包装器,它;,这已经足够好了。谢谢谢谢,但你基本上是在两行中完成的,你可以在一行中完成。我只是想精简我的代码,让它写起来更简单。这很公平。根据您处理的问题类型,将NA视为假或真可能会导致逻辑问题。
> x <- c(1, 2, 1, NA)
> x[which(x==1)]
[1] 1 1
> which(x==1)
[1] 1 3
x <- c(1, 2, 1, NA)
x2 <- x == 1
x2[is.na(x2)] <- FALSE
> x2
[1]  TRUE FALSE  TRUE FALSE