如何创建以逻辑表达式为参数的R函数
是否可以创建一个使用“逻辑表达式”参数的函数 例如,类似这样的工作:如何创建以逻辑表达式为参数的R函数,r,function,R,Function,是否可以创建一个使用“逻辑表达式”参数的函数 例如,类似这样的工作: x <- function(d, s) { # ... return(subset(d, s)) } x一种方法是结合使用eval和parse: x <- function(d, s) { return(subset(d, eval(parse(text = s)))) } high.temp <- x(d = airquality, s = "Temp > 80") x一种方法是结合
x <- function(d, s)
{
# ...
return(subset(d, s))
}
x一种方法是结合使用eval
和parse
:
x <- function(d, s) {
return(subset(d, eval(parse(text = s))))
}
high.temp <- x(d = airquality, s = "Temp > 80")
x一种方法是结合使用eval
和parse
:
x <- function(d, s) {
return(subset(d, eval(parse(text = s))))
}
high.temp <- x(d = airquality, s = "Temp > 80")
x一种方法就像subset()
(您可以通过getS3method(“subset”,“data.frame”)
查看subset()
代码,我的答案是一段代码)eval(expr,envir)
在envir
指定的环境中计算expr
参数
x <- function(d, s) {
r <- eval(substitute(s), d)
return(d[r,])
}
a1 <- x(iris, Species == "virginica")
a2 <- x(iris, Species == "virginica" & Sepal.Length > 7)
b <- x(cars, dist > 50)
x一种方法就像subset()
(您可以通过getS3method(“subset”,“data.frame”)
查看subset()
代码,我的答案是一段代码)eval(expr,envir)
在envir
指定的环境中计算expr
参数
x <- function(d, s) {
r <- eval(substitute(s), d)
return(d[r,])
}
a1 <- x(iris, Species == "virginica")
a2 <- x(iris, Species == "virginica" & Sepal.Length > 7)
b <- x(cars, dist > 50)
x这就是为什么建议仅以交互方式使用subset
。基本上,不要这样做。这只会让人头疼。在函数中使用标准的[
提取(help(Extract)
)。看看关于subset
的讨论,看看为什么它很棘手:相关:这可能是相关的:这就是为什么subset
只建议交互使用的原因。基本上,不要这样做。这只会造成麻烦。使用标准[
函数中的提取(帮助(提取)
)。请查看此关于子集的讨论,以了解其棘手的原因:相关:可能相关: