R语言 将每个读取文件分配给不同的变量

wsxa1bj1  于 2022-12-06  发布在  其他
关注(0)|答案(3)|浏览(148)

我试图通过为每个文件分配不同的变量名来将100个文件读入R,但我收到以下错误消息
在sprintf(“读取_数据_%d”,1)〈- readRDS(sprintf(“/home/data/Desktop/读取_数据_%s.rds”,:赋值目标扩展到非语言对象
这是我的代码

for (i in 1:100) 
{
     sprintf("read_data_%d", [i]) <- readRDS(sprintf("/home/data/Desktop/read_data_%s.rds", filenames[i]))
}

谢谢

2eafrhcq

2eafrhcq1#

对于大多数应用程序,将所有数据存储在列表中会更容易:

read_data <- list()
for (i in 1:100)
    read_data[i] <- readRDS(sprintf("read_data_%s.rds", filenames[i]))

然后,您可以使用以下命令访问文件编号i中的数据

read_data[[i]]
rsaldnfx

rsaldnfx2#

我赞同DGKarlsson的观点,将这些数据存储在列表中可能更容易;但是,如果确实希望为每个文件的输出生成单独的对象(例如,如果每个文件都是具有不同列集的数据框),则可以使用assign()函数:

assign(variable_name,variable_value)

原始解决方案的问题在于,它试图为sprintf()的输出赋值;但是,sprintf()的输出是一个字符串,不能赋值。

pbgvytdp

pbgvytdp3#

如果要将一系列文件读入单独的对象中,则可以设置一个具有两列的数据框:新对象名称及其文件路径。然后使用pmap遍历每一行,并将每个文件分配给单独的对象:

name_file_tbl %>% select(obj_name,fpath) %>% 
pmap( function(obj_name, fpath){
assign(obj_name, readRDS(fpath), envir = .GlobalEnv )
})

相关问题