为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用同名的字符变量调用对象

如何使用同名的字符变量调用对象

慕的地10843 2019-07-13 15:16:06
我试图在R中编写一个函数,以类似的方式对一些文件进行批处理分析。这些文件属于类ExpressionSetIllumina..我可以创建一个包含目录中所有文件的名称的字符(字符串)向量,并加载其中的每个文件:list = list.files()for (i in list[1]) {       load(i)}这将正确加载文件。> ls()[1] "i"                     "list"                  "SSD.BA.vsn"> class(SSD.BA.vsn)[1]  "ExpressionSetIllumina"attr(,"package")[1] "beadarray"我现在想做的是用i(字符串)"SSD.BA.vsn")分配对象SSD.BA.vsn到一个新的对象数据,以便:>data = SomeFunction(i)>class(data)[1] "ExpressionSetIllumina"attr(,"package")[1] "beadarray"但是,无论我到目前为止尝试了什么,都只是将数据作为一个字符向量返回,其值与我的值相同,或者根本不起作用。所以我想知道是否有一个函数能帮到我,或者我是否需要用别的方法去做。我将对象或变量的名称作为字符串存储在字符向量中。如何使用字符串对象名对象进行操作?
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

我想你想get.

data <- get(i)

也就是说,一旦你开始使用get(以及它的对应方,assign),您通常会得到可怕的不可读代码。

对于像您这样的批处理分析,通常最好将所有数据读入数据帧列表,然后随意使用lapply..类似于:

data_files <- list.files()all_vars <- lapply(data_files, function(file){
  vars_loaded <- load(file)
  mget(vars_loaded, parent.frame())})

mget的版本是get它同时检索多个变量。在这里,它用于检索调用LOAD加载的所有内容。

现在您有了一个列表:顶级列表与文件相关,较低级别的列表包含从该文件加载的变量。


查看完整回答
反对 回复 2019-07-13
  • 1 回答
  • 0 关注
  • 523 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信