2014-07-24 37 views
1

我希望在get()的字符串中使用引号可以得到一些帮助。在get函数中使用引号(get())

说,我想从一个列表

some_list <- list(element1=11,element2=22,element3=33) 

自然检索元素,我可以简单地通过

some_list[['element1']] 

引用此元素但是,一旦我用这个作为GET中的字符串( ),R会抛出此错误消息

get("some_list[['element1']]") 

> Error in get("some_list[['element1']]") : 
    object 'some_list[['element1']]' not found 

我不明白为什么会出现这种情况。 get()在与其中没有引号的字符串一起使用时工作正常,例如,

get("some_list") 

我也试图逃避字符串中的引号(虽然我不这样,我需要,因为它们是单引号),但它也不起作用。

some_list[["\'"element1"\'"]] 

我错过了什么。

+0

真的,你可能不应该使用'get'。这是一个迹象,表明你可能没有以类似R的方式做某件事。 – MrFlick

回答

2

get不会这样做。

some_list[['element1']]不是R环境中对象的名称(从技术角度而言)。当在控制台键入some_list[['element1']]时,R解析表达式,查找符号some_list,然后调用函数[[get仅用于查找符号。

(从技术上讲,我的一系列事件有可能是不正确的,但我列出了他们的方式,以帮助使这个问题清楚了。真的,R是刚刚解析表达式,然后调用[[参数some_list'element1',并且随后查找那些符号。)

+0

优秀的解释,我不知道[[是一个函数。通过怀疑引号成为罪魁祸首,彻底咆哮错误的树。谢谢 – SprengMeister

+0

@SprengMeister(几乎)R中的所有内容都是函数调用! :) – joran

+0

为了避免将来这样的问题,@joran,你有推荐什么样的出版物/手册等,解释这些细节? – SprengMeister

1

引号与它无关。运行: get("some_list")[['element1']]