首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个基本的层次上,308-解析在R中做了什么?

在一个基本的层次上,308-解析在R中做了什么?
EN

Stack Overflow用户
提问于 2015-03-05 20:48:54
回答 1查看 2.5K关注 0票数 2

我已经看到了在循环或应用函数中使用references的引用,但我仍然不清楚如何使用它。为了帮助像我这样的初学者理解它,有人能解释一下为什么下面的第一节(不带eval解析)起作用,而第二节(用它)不能工作吗?这是否是所用的类型?谢谢!

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-05 20:56:34

eval(parse(text = "Larry"))与直接在R终端中键入Larry是一样的。

代码语言:javascript
复制
> "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(...))的大多数需求

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28887422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档