如何创建以逻辑表达式为参数的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
只建议交互使用的原因。基本上,不要这样做。这只会造成麻烦。使用标准
[
函数中的提取(
帮助(提取)
)。请查看此关于
子集的讨论,以了解其棘手的原因:相关:可能相关: