有没有办法将条件作为参数传递?例如:

#g is some data'

getIndexesWhen <- function (colname, condition) {
    a <- as.vector(g[,colname])
    a <- which(a fits condition)
}

然后能够传递条件本身,例如调用类似getIndexesWhen('GDP','> 435')之类的东西。还是我需要针对每种情况分别设置功能,例如=,!=,>,

最佳答案

您可以将“大于”部分和“435”部分拆分为getIndexesWhen函数的参数,而不是对“大于435”使用表达式或函数:

getIndexesWhen <- function(colname, fxn, rhs) {
  which(fxn(as.vector(g[,colname]), rhs))
}

现在,您可以获得所需的功能,而无需为每个功能/右侧配对声明用户定义的功能:
g <- iris
getIndexesWhen("Petal.Width", `<`, 0.2)
# [1] 10 13 14 33 38
getIndexesWhen("Petal.Length", `==`, 1.5)
# [1]  4  8 10 11 16 20 22 28 32 33 35 40 49

关于r - 将条件作为函数参数传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41229761/

10-13 00:00