我正在编写一个函数,我想提供一个包含要在函数内部进行求值的条件的变量。例如,我有一个小时变量,包含0,3,6,9,18,3,6,9,18,0,18等值...我想选择小时变量匹配为0,6的索引这个0,6可能会根据其他一些参数而改变。基本上它们并不总是固定的。所以我传递一个变量g1 = call("which", (hourval==0 | hourval == 6))
。我希望在程序中评估此语句。因此我使用语句x1 = eval(g1)
。显然,当我传递变量g1
时,不会生成那个时间的小时变量,而是在eval(g1)
语句之前生成它。我收到错误,找不到对象hourval
。有没有其他方法可以解决这个问题。
在此先感谢,感谢任何帮助。
Narayani Barve
答案 0 :(得分:7)
这是你想要的吗?
> hourval <- c(0, 3, 6, 9, 18, 3, 6, 9, 18, 0, 3, 18)
> test <- c(0,6)
> which(hourval %in% test)
[1] 1 3 7 10
我花了一些时间才用这个搜索策略找到它
library(fortunes)
fortune("parse")
但最终得到了我记得的那个:
> fortune("parse")
If the answer is parse() you should usually rethink the question.
-- Thomas Lumley
R-help (February 2005)
我的部分困难在于我记得引用的内容是“eval(解析(”。
答案 1 :(得分:1)
这就是你似乎描述的内容
f1 <- function(y) {
hourval <- c(0, 3, 6, 9, 18, 3, 6, 9, 18, 0, 3, 18)
eval(substitute(y))
}
f1( which(hourval %in% c(0,6)) )
但这就是我要做的事情。
f2 <- function(y) {
hourval <- c(0, 3, 6, 9, 18, 3, 6, 9, 18, 0, 3, 18)
which(hourval %in% y)
}
f2( c(0,6) )
但同样,还没有足够的信息知道其中任何一个是否回答了问题。