首页 文章

使用R将多个数据帧写入.csv文件

提问于
浏览
3

我使用lapply将函数应用于许多数据框:

data.cleaned <- lapply(data.list, shooter_cleaning)

然后根据其主题编号(例如,100)标记列表中的每个结果数据帧:

names(data.cleaned) <- subject.names

我想要做的是根据主题编号将每个新数据框保存为单独的.csv文件 . 例如,对于主题100,我希望.csv文件被标记为“100.csv”通常要这样做(对于单个数据帧)我只会写(其中x是数据帧):

write.csv(x, "100.csv", row.names = F)

但是,显然使用lapply为我的数据框列表执行此操作只会产生许多“100.csv”的副本,而我希望这些文件根据其主题编号是唯一的 . 我如何(使用apply to?)将每个数据帧保存到自己唯一的.csv文件中?

2 回答

  • 9

    这是理查德评论中的self-contained example,但使用列表中数据框的名称作为CSV文件的文件名:

    # Create a list of n data frames
    
    n <- 10
    
    my_list <- lapply(1:n, function(i)  data.frame(x = rnorm(10), y = rnorm(10)) )
    
    # name the data frames
    
    names(my_list) <- letters[1:n]
    
    # save each new data frame as an individual .csv file based on its name
    
    lapply(1:length(my_list), function(i) write.csv(my_list[[i]], 
                                          file = paste0(names(my_list[i]), ".csv"),
                                          row.names = FALSE))
    
  • 0

    如果这有帮助:我有一个包含多个数据帧的环境,只有那些数据帧,我想将每个数据帧作为单独的CSV文件输出 . 在Ben的回答和发现 mget 的帮助下,我能够使用以下代码执行此操作:

    for(i in 1:length(ls())) {
      write.table(
      mget(ls()[[i]]),
      file = paste0(ls()[[i]], ".csv"),
      sep = ";",
      qmethod = "double",
      row.names = FALSE)
    }
    

相关问题