帮我优化这段代码map_dfr(c("smoke","drink","obesity"), ~ dat1 <- data %>% filter(get(.x) == 1) %>% count(year,sex,agegroup,cancer)
时间: 2023-11-01 21:01:51 浏览: 66
hybrid_dfr_system:MICS混合DFR系统的FPGA设计
可以尝试使用管道符 `%>%` 将操作串起来,避免多次赋值。同时,可以将函数 `count()` 的参数列表放在新的一行,使代码更加清晰易读。
```R
library(dplyr)
library(purrr)
dat1 <- data %>%
map_dfr(c("smoke", "drink", "obesity"), ~ {
filter(.data, !!sym(.x) == 1) %>%
count(
year,
sex,
agegroup,
cancer
)
})
```
这段代码中使用了 `sym()` 函数将字符串转换为符号,避免使用 `get()` 函数。同时,使用了 `map_dfr()` 函数来统一处理三个不同的数据列。
阅读全文