【发布时间】:2021-06-20 16:45:19
【问题描述】:
这里是初学者,我有 31 个 excel 文件要提取数据框。我想要一个 R 循环来读取所有文件,然后只取 2 列并更改列名。然后我想根据同一行合并文件。
这是我的尝试:
files = list.files(path=".", pattern="xls")
for (i in 1:length(files)){
table = data.frame(readxl::read_xls(files[i]), stringsAsFactors=FALSE)
table = table[,c(1,3)]
colnames(table) = c("UR",paste0("Zscore",i))
}
}
}
问题是我不知道如何编写代码来保存单个文件。此代码仅保存最后一个文件。我整晚都在谷歌上搜索,但无法弄清楚。 我也尝试了 assign() 但我不知道如何在循环中修改分配中的表。
files = list.files(pattern="*.xls")
for (i in 1:length(files))assign(files[i], data.frame(readxl::read_xls(files[i])))
我希望文件最终像 UR、Zscore1、Zscore2、Zscore3...
So instead I did it manually like this:
table1 = data.frame(readxl::read_xls(files[1]), stringsAsFactors=FALSE)
table1 = table1[,c(1,3)]
colnames(table1) = c("UR",paste0("Zscore",1))
table2 = data.frame(readxl::read_xls(files[2]), stringsAsFactors=FALSE)
table2 = table2[,c(1,3)]
colnames(table2) = c("UR",paste0("Zscore",2))
tableA = merge(table1,table2, all.x = T)
table3 = data.frame(readxl::read_xls(files[3]), stringsAsFactors=FALSE)
table3 = table3[,c(1,3)]
colnames(table3) = c("UR",paste0("Zscore",3))
tableA = merge(tableA,table3, all.x = T)
【问题讨论】: