这是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) 我想在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在参数中设置,它只返回相同的字符串.这里的任何帮助将不胜感激,我希望我已经清楚了!