R:在循环内创建的数据集上使用“名称”功能

时间:2015-06-22 20:11:39

标签: r paste assign names

我使用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")

但是得到错误“赋值目标扩展到非语言对象”。 (我需要更改每个数据集中的变量名称循环中,因为每个数据集中的变量名称需要不同)。

非常感谢任何关于如何做到这一点的建议。

感谢。

2 个答案:

答案 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”。