【问题标题】:How to process a list of .csv dataframe如何处理 .csv 数据框列表
【发布时间】:2020-04-30 18:33:59
【问题描述】:

对不起这里的新手问题,我写了一系列代码来处理一个 .csv 数据帧。

这是代码(示例版本)的样子:

MyFile <- read.csv(tk_choose.files(caption = "Choose CSV files from directory",),header = TRUE)%>% # 
 Select Input CSV Data
 transmute(A)%>% 
 summarise_all(sum,)%>%
 write.csv(file = choose.files()) # Output As CSV File)

这是输出 CSV 文件中的输出内容:

但现在我需要将这些代码系列应用到 .csv 数据列表而不是一个。

我设法使用了代码:

temp = tk_choose.files(caption = "Choose CSV files from directory",)
myfiles = lapply(temp, read.delim)

将这些 .csv 文件作为列表导入,但有什么方法可以应用相同的代码 (即。

transmute(A)%>% 
summarise_all(sum,)%>%

) 到列表中的所有 .csv 文件并将结果组合在一起? (即。

            A
file1   658839755
file2   1541654313
file3   4643213843

)

谢谢

【问题讨论】:

    标签: r list loops csv export-to-csv


    【解决方案1】:

    您可以使用lapply/map 而不是myfiles,并将相同的代码应用于每个文件。

    library(dplyr)
    purrr::map(myfiles, ~.x %>% transmute(A)%>% 
                         summarise_all(sum) %>%
                         write.csv(file = choose.files())) 
    

    但是,这可能更简单

    purrr::map(myfiles, ~.x %>% summarise(A = sum(A)) %>% 
                          write.csv(file = choose.files()) 
    

    【讨论】:

    • 嗨,Ronah,请问~.x 代表什么?
    • @BomberGay 这是一种公式风格的语法,可以替代我们通常与lapply 一起使用的匿名函数,例如lapply(mylist, function(x) ... 。因此,我们在purrr 中使用.x 而不是x。在?map 阅读有关此内容的更多信息。
    猜你喜欢
    • 2017-06-25
    • 2019-10-07
    • 1970-01-01
    • 2016-08-20
    • 2010-12-12
    • 2014-11-20
    • 2022-11-03
    • 2011-01-25
    • 1970-01-01
    相关资源
    最近更新 更多