【发布时间】:2020-02-21 13:50:08
【问题描述】:
我想根据值和列组合编写不同的 .csv 文件。示例 tbl 可以在下面找到:
# libs
library(tidyverse)
library(data.table)
# tbl
tbl <- tibble(
Record = 1:100,
B1 = c(rep("B1", 10), rep(NA, 90)),
B2 = c(rep("B2", 20), rep(NA, 80)),
B3 = c(rep("B3", 40), rep(NA, 60)),
B4 = c(rep("B4", 70), rep(NA, 30)),
B5 = c(rep("B5", 95), rep(NA, 5))
)
tbl
一个一个地写入不同的 csv 文件可以这样完成:
B1 <- tbl %>%
filter(B1 == "B1") %>%
select(Record, B1) %>%
fwrite(., file = "B1.csv")
但是,我想通过创建一个自定义函数并为每个值列组合一个一个地编写不同的 .csv 文件来迭代这个过程。我在下面尝试了这样的事情。
Batch <- "B1"
f_stack <- function(Batch) {
batch <- tbl %>%
filter(Batch == Batch) %>%
select(Record, Batch)
return(batch)
}
f_stack(Batch)
但是,它不会过滤正确的记录。我省略了 fwrite 代码行,因为它没有返回正确的 tbl。有人知道如何拉这个(最好是purrr)任何建议将不胜感激。
【问题讨论】: