有没有办法将条件作为参数传递?例如:
#g is some data'
getIndexesWhen <- function (colname, condition) {
a <- as.vector(g[,colname])
a <- which(a fits condition)
}
Run Code Online (Sandbox Code Playgroud)
然后能够传递条件本身,例如调用类似的东西getIndexesWhen('GDP','> 435').或者我是否需要为每种情况分别设置函数,例如=,!=,>,<等等?
您可以将“大于”部分和“435”部分拆分为函数的参数,而不是使用“大于 435”的表达式或函数getIndexesWhen:
getIndexesWhen <- function(colname, fxn, rhs) {
which(fxn(as.vector(g[,colname]), rhs))
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以获得所需的功能,而无需为每个函数/右侧配对声明用户定义的函数:
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
Run Code Online (Sandbox Code Playgroud)