如何在R中使用boucle填充数据框?

时间:2019-08-20 09:00:52

标签: r dataframe

我有6个csv文件,其中包含3列,我想获取每个文件中每一列的最大值,并将其放入已经创建的另一个新数据框中

我创建了一个数据框和一个for boucle,以读取所有csvs并提取所需的数据。我执行代码时出现的问题,他用所有列中最后一个csv文件的值填充了数据框

       Maxx     Maxy    Maxz 
1 -5.975904 7.614458 3.53012    
2 -5.975904 7.614458 3.53012   
3 -5.975904 7.614458 3.53012   
4 -5.975904 7.614458 3.53012   
5 -5.975904 7.614458 3.53012    
6 -5.975904 7.614458 3.53012


f <- data.frame(matrix(NA,ncol = 3, nrow = 6))
colnames(f) <- c("Maxx","Maxy","Maxz")
head(f)

a <- list.files(pattern = ".csv")
for (i in a)
{
  b <- read.csv(i)
  j <- i
  for (j in 1:6) {

    f[j,1] <- max(as.numeric(as.character(b$X)), na.rm=TRUE)
    f[j,2] <- max(as.numeric(as.character(b$X.1)), na.rm=TRUE)
    f[j,3] <- max(as.numeric(as.character(b$X.2)), na.rm=TRUE)

                 }    
}

head(f)

       Maxx     Maxy    Maxz 
1 -5.975904 7.614458 3.53012    
2 -5.975904 7.614458 3.53012   
3 -5.975904 7.614458 3.53012   
4 -5.975904 7.614458 3.53012   
5 -5.975904 7.614458 3.53012    
6 -5.975904 7.614458 3.53012 

我希望表具有相同的结构,具有18个不同值,对于每个文件和列,都具有适当的值。预先感谢

1 个答案:

答案 0 :(得分:0)

我们可以循环浏览a中的文件,读取它们,为每一列查找最大值并将所有文件的结果绑定在一起。

do.call(rbind, lapply(a, function(x) {
    df <- read.csv(x)
    sapply(df, max, na.rm = TRUE)
}))

其中

a <- list.files(pattern = ".csv")