如何将每一行或观察结果作为R中的单个文件写出来

时间:2016-02-26 19:59:31

标签: r subset

我需要将每一行写成csv。 示例数据:

myData <- structure(list(SID = c(200101L, 200102L, 200201L, 200202L, 200203L
), pr_1979_01_01 = c(11.0536289215088, 11.0536289215088, 7.78615140914917, 
7.78615140914917, 7.78615140914917), pr_1979_01_02 = c(10.554141998291, 
10.554141998291, 11.3847818374634, 11.3847818374634, 11.3847818374634
), pr_1979_01_03 = c(0, 0, 0, 0, 0), pr_1979_01_04 = c(0.453366577625275, 
0.453366577625275, 0.38262751698494, 0.38262751698494, 0.38262751698494
)), .Names = c("SID", "pr_1979_01_01", "pr_1979_01_02", "pr_1979_01_03", 
"pr_1979_01_04"), class = c("tbl_df", "data.frame"), row.names = c(NA, 
-5L))

我知道我可以使用subset()dplyr::filter(),但我有几百行和几千列。我该如何自动化?

1 个答案:

答案 0 :(得分:1)

我们使用lapply遍历数据集的行序列,对数据集的行进行子集化,然后在每行上使用write.csv

 lapply(seq_len(nrow(myData)), function(i) 
     write.csv(myData[i,], paste0('SID', i, '.csv'), 
            row.names=FALSE, quote=FALSE))

修改

要使用列中的名称(例如站点ID)编写文件,请创建所述列的向量。

SID <- myData$SID

然后使用以下内容:

  lapply(seq_len(nrow(myData)), function(i) 
  write.csv(myData[i,], paste0(SID[i], '.csv'), 
            row.names=FALSE, quote=FALSE))

请注意粘贴参数的差异:

paste0(SID[i], i, '.csv')

vs

paste0(SID[i], '.csv')