小编gir*_*ere的帖子

不要选择NA值

这是R中的一个小麻烦,我希望看看是否可能有一些默认情况.

我创建了以下向量:

x <- c(1, 2, 1, NA)
Run Code Online (Sandbox Code Playgroud)

我现在想要选择x,只有等于1的值.我这样做:

x2 <- x[x == 1]
Run Code Online (Sandbox Code Playgroud)

现在,当你看到x2里面有什么价值时:

> x2
[1]  1  1 NA
Run Code Online (Sandbox Code Playgroud)

似乎R默认包括NA值而不管条件如何.我希望它能使R默认从条件中排除NA值(因为它NA不符合条件x == 1).

我知道这个complete.cases函数,用法如下:

x2 <- x[complete.cases(x == 1)]
Run Code Online (Sandbox Code Playgroud)

所需的输出将是complete.cases方法的结果:

[删除原因我了解了这个]

这解决了我的问题,但我很想知道是否有一个设置options或类似的东西,我可以默认R不在布尔条件中包括NA.

我想看看是否有一种方法可以设置,以便x2 <- x[x == 1]结果相同x2 <- x[complete.cases(x == 1)].目前不同的是,非完整的.(正常)方法允许NAs通过,我希望不是这种情况.


嘿,对不起,我意识到我搞砸了我的输出complete.cases,你说的很多,我基本上想知道我是否可以做到这一点:

> x <- c(1, 2, 1, NA)
> x2 <- x[x == 1 & !is.na(x)]
> x2 …
Run Code Online (Sandbox Code Playgroud)

select conditional boolean r

2
推荐指数
1
解决办法
374
查看次数

正则表达式选择逗号但不在括号之间

我想在R中创建一个加载给定函数默认值的函数.为此,我在args函数上使用参数,并希望将其分解为函数的默认参数并将其加载到全局环境中.这需要一些正则表达式,并且已经碰到了这个我很难解决的问题.

这是一个示例函数:

myFunc <- function(a = 1, b = "hello world", c = c("Hello", "World")) {}
Run Code Online (Sandbox Code Playgroud)

我已经使用自己的函数将它归结为这一点:

x <- "a = 1, b = \"hello world\", c = c(\"Hello\", \"World\")"
Run Code Online (Sandbox Code Playgroud)

但是,我正在努力的是将函数参数拆分.我想在逗号上拆分,但是如果你有一个函数参数在默认值中有逗号(就像c参数那样),那么就会导致问题.我在想的是,如果有一种方法可以调用与逗号匹配的正则表达式,而不是在两个括号之间使用逗号,那么我可以使用strsplit该表达式来获取我想要的内容.

我试图匹配两个括号之间的逗号大小如下:

\\(.*,.*\\)
Run Code Online (Sandbox Code Playgroud)

现在,我已经研究了如何做我上面描述的内容,看起来像我需要的消极前瞻,所以我试图做这样的事情.

splitx <- strsplit(x, "(?!\\(.*,.*\\)(,)")
Run Code Online (Sandbox Code Playgroud)

但R告诉我这是一个非法的正则表达式.如果我perl = TRUE在参数中设置,它只返回相同的字符串.这里的任何帮助将不胜感激,我希望我已经清楚了!

regex string r

2
推荐指数
1
解决办法
210
查看次数

标签 统计

r ×2

boolean ×1

conditional ×1

regex ×1

select ×1

string ×1