R:在循环中创建的数据集上使用 "names" 函数

R: Using the "names" function on a dataset created within a loop

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

但是得到错误"target of assignment expands to non-language object"。 (我需要在循环 内更改每个数据集中的变量名称 ,因为每个数据集中的变量名称需要不同)。

任何有关如何执行此操作的建议将不胜感激。

谢谢。

更好的方法是将文件读入 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')

虽然我同意将 data.frames 保存在列表中比在全局环境中创建一堆变量要好得多,但您也可以在读取 [=] 中的文件时设置名称12=]

assign(paste("import",i,sep=""), 
    read.csv(files[i], header=FALSE, col.names=c("xxxx", "yyyy")))

使用 assign() 不是很好 "R-like"。