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