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

How to write each row or observation out as an individual file in R

我需要将每一行写成 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(),但我有几百行和几千列。我怎样才能使它自动化?

我们使用 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')

对比

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