使用lapply解析生成CSV的数据框

时间:2017-05-22 19:10:48

标签: r csv

我正在尝试获取数据框并将其发送到.csv文件。以下是使用dput(df)的示例数据:

df <- structure(list(ident = 1:35, code = structure(c(1L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 
4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L), .Label = c("A", 
"B", "C", "D", "E", "F"), class = "factor"), Desc = structure(c(3L, 
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 
3L, 1L), .Label = c("lax", "mia", "nyc"), class = "factor")), .Names = c("ident", 
"code", "Desc"), class = "data.frame", row.names = c(NA, -35L
))

我正在尝试遍历我的数据并仅选择A并输出到文件。

filename <- levels(df$code)

filename2 <- paste0(filename, "_file.csv")

我会使用lapply为每个代码编写一个文件吗?任何帮助,将不胜感激!

1 个答案:

答案 0 :(得分:1)

以下是tidyverse解决方案:

由于您只是想将函数用于其副作用(写入文件),并且不需要返回任何值,因此purrr包中的walk函数适用于此:

library(tidyverse)

walk(unique(df$code), function(x) {write_csv(df %>% filter(code == x), paste0(x, "_file.csv"))})