r - 在基本层面上,eval-parse 在 R 中做什么?

标签 r

我已经看到在循环或应用函数中使用 eval-parse 的引用,但我仍然不清楚如何使用它。为了帮助像我这样的初学者理解它,有人可以解释为什么下面的第一部分(没有 eval-parse)有效,而第二部分(有它)不起作用?这是 eval-parse 的用途吗?谢谢!

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)

最佳答案

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(.. .))

关于r - 在基本层面上,eval-parse 在 R 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28887422/

相关文章:

R如何从时间序列中提取月末行

r - data.table bug,导致 R 中出现段错误

r - 如何使用名称向量重命名 tidyverse 中的列

r - 评估函数内环境中的表达式

r - 即使小数点后的所有内容都是零,也能找到小数点

r - 如何在ggplot中应用多边形 mask 层

r - 如何使用 UTF-8 编码保存的 source() .R 文件?

php - 将 cakePHP SQL 表直接导入到 R

R: (un)reduce 数据框

r - 因子: Error in eval(family$initialize) : y values must be 0 <= y <= 1的Logistic回归