R 使用列名和添加列在循环中编辑多个数据帧
我在一个文件夹中有10个数据集,其中有4列,我希望在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文件,统一它们的列名并添加一个额外的计算列,然后将它
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
。在这种情况下,我建议将数据放在列表中,alax谢谢,然后可以使用lappy更改这些文件列的列名吗?当然可以。你可以做任何你想做的事。如果你只想更改其中一列的名称,那么你可以做colnames(x[[3]])我认为这里的概念有点模糊。OP询问如何处理多个帧,但从未建议将它们组合在一起,因此最后的do.call
是自以为是的。(在许多情况下,它肯定是有效的,我不知道它在这里。)很好地安全使用全名
,我总是鼓励它以防御性的编码姿态使用。