我使用for循环读取多个csv文件并命名数据集import1,import2等。例如:
assign(paste("import",i,sep=""), read.csv(files[i], header=FALSE))
但是,我现在想要重命名每个数据集中的变量。我尝试过以下方法:
names(as.name(paste("import",i,sep=""))) <- c("xxxx", "yyyy")
但是得到错误“赋值目标扩展到非语言对象”。 (我需要更改每个数据集中的变量名称在循环中,因为每个数据集中的变量名称需要不同)。
非常感谢任何关于如何做到这一点的建议。
感谢。
答案 0 :(得分:1)
更好的方法是将文件读入data.frames列表,而不是每个文件一个data.frame对象。假设files
是文件名的向量(如上所示):
import <- lapply(files, read.csv, header=FALSE)
然后,如果您想使用循环对列表中的每个data.frame进行操作,您可以轻松地:
for (i in seq_along(import)) names(import[[i]]) <- c('xxx', 'yyy')
答案 1 :(得分:0)
虽然我同意将data.frames保存在列表而不是在全局环境中创建一堆变量会更好,但是当你在
中读取文件时也可以设置名称。assign(paste("import",i,sep=""),
read.csv(files[i], header=FALSE, col.names=c("xxxx", "yyyy")))
使用assign()
并不是“R-like”。