R 使用列名和添加列在循环中编辑多个数据帧

R 使用列名和添加列在循环中编辑多个数据帧,r,dataframe,R,Dataframe,我在一个文件夹中有10个数据集,其中有4列,我希望在r中作为单独的数据帧读入,为此我使用以下方法: temp = list.files(pattern="*.csv") for(i in 1:length(temp)){ assign(paste("name",i,sep = ""), as.data.frame(read.table(temp[i]))) } 然后,如果我想更改列名并添加一个新的列V5,下面将在“path”中读取.csv文件,统一它们的列名并添加一个额外的计算列,然后将它

我在一个文件夹中有10个数据集,其中有4列,我希望在r中作为单独的数据帧读入,为此我使用以下方法:

temp = list.files(pattern="*.csv")
for(i in 1:length(temp)){
  assign(paste("name",i,sep = ""), as.data.frame(read.table(temp[i])))
}

然后,如果我想更改列名并添加一个新的列V5,下面将在“path”中读取.csv文件,统一它们的列名并添加一个额外的计算列,然后将它们全部合并到一个数据集中

path <- ""
temp <- list.files(path=path,pattern="*.csv",full.names = T)
dfs <- lapply(temp,function(x)
  {
    df <- read.csv(x,stringsAsFactors = F,col.names=c("col1","col2","col3","col4"))
    df$col5 <- 1*2
    df
  })

do.call("rbind",dfs)

path以类似df-01、df-02的顺序重命名所有数据集。。。df-10,如下所示

   for(ii in 2:5){
       input_csv <- sprintf('sample_-%02d.csv', ii)
       read.csv(input_csv, stringsAsFactors = F,col.names=c("col1","col2","col3","col4"))
       print(input_csv)
       df$V5 <- df$V3**2
    }
for(2:5中的ii){

输入csv我不鼓励在几乎所有情况下都使用
assign
。在这种情况下,我建议将数据放在列表中,ala
x谢谢,然后可以使用lappy更改这些文件列的列名吗?当然可以。你可以做任何你想做的事。如果你只想更改其中一列的名称,那么你可以做
colnames(x[[3]])我认为这里的概念有点模糊。OP询问如何处理多个帧,但从未建议将它们组合在一起,因此最后的
do.call
是自以为是的。(在许多情况下,它肯定是有效的,我不知道它在这里。)很好地安全使用
全名
,我总是鼓励它以防御性的编码姿态使用。