我已经看到了在循环或应用函数中使用references的引用,但我仍然不清楚如何使用它。为了帮助像我这样的初学者理解它,有人能解释一下为什么下面的第一节(不带eval解析)起作用,而第二节(用它)不能工作吗?这是否是所用的类型?谢谢!
myfunc <- function(x){
cat("Current x:", x, "\n")
cat("Current index in myvec:", "\n")
print(which(myvec == x))
}
myvec <- c("Larry", "Moe", "Curly")
lapply(myvec, myfunc)
myfunc <- function(x){
cat("Current x:", x, "\n")
cat("Current index in myvec:", "\n")
print(which(eval(parse(text = x)) == x))
}
myvec <- c("Larry", "Moe", "Curly")
lapply(myvec, myfunc)发布于 2015-03-05 20:56:34
eval(parse(text = "Larry"))与直接在R终端中键入Larry是一样的。
> "Text"
[1] "Text"
> eval(parse(text = "Text"))
Error in eval(expr, envir, enclos) : object 'Text' not found
> Text = 1:10
> eval(parse(text = "Text"))
[1] 1 2 3 4 5 6 7 8 9 10从本质上说,它允许您以字符串的形式调用对象的名称。在不知道需要哪个对象的情况下,内部函数很有用,尽管大多数经验丰富的R用户发现,在list中存储数据消除了对eval(parse(...))的大多数需求
https://stackoverflow.com/questions/28887422
复制相似问题