gpt4 book ai didi

r - 如何调用具有同名字符变量的对象

转载 作者:行者123 更新时间:2023-12-03 07:58:10 26 4
gpt4 key购买 nike

我正在尝试在 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"

但是到目前为止,无论我尝试过什么,都只是将数据作为与 i 具有相同值的字符向量返回,或者根本不起作用。所以我想知道是否有一个函数可以为我做这件事,或者我是否需要以其他方式去做。

我将对象或变量的名称存储为字符向量中的字符串。如何使用字符串对象名称对对象执行某些操作?

最佳答案

我想你想要 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())
})
mgetget的版本一次检索多个变量。在这里它用于检索通过调用加载加载的所有内容。

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

关于r - 如何调用具有同名字符变量的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9083907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com