[英]R related - How to use lapply and list to loop a customized function in r?
这里是新手,想在 r 中寻求一些指导。
我有一个如下数据集
df <- data.frame (ID = c(1:10),
Term30 = c(0,0,0,0,0,0,1,1,1,0),
Term60 = c(0,0,0,0,0,1,1,1,NA,1),
Term90 = c(0,0,0,0,1,1,1,NA,NA,1),
Rec = c(3,3,3,3,3,2,2,1,1,1)
)
...我在下面创建了 function 来总结我需要的结果。
termfun <- function(term){
df %>%
drop_na()%>%
tabyl(Rec,
{{term}})%>%
adorn_totals(c("row","col"))%>%
adorn_percentages("row") %>% #can be "row", "col", or "all"
adorn_pct_formatting( digits = 2) %>%
adorn_ns() %>%
adorn_title("combined")%>%
knitr::kable()
}
我试图用下面的列表循环这个 function 但它不起作用。
termlist <- list("Term30","Term60","Term90")
lapply(termlist, termfun)
以下是我收到的消息
Error: Can't extract columns that don't exist.
x Column `Term30` doesn't exist.
Run `rlang::last_error()` to see where the error occurred.
有没有人对我如何使循环工作有任何见解/建议?
非常感谢!
将您的 function 更改为使用.data
而不是{{}}
。
library(janitor)
library(dplyr)
termfun <- function(term){
df %>%
drop_na()%>%
tabyl(Rec,
.data[[term]])%>%
adorn_totals(c("row","col"))%>%
adorn_percentages("row") %>% #can be "row", "col", or "all"
adorn_pct_formatting( digits = 2) %>%
adorn_ns() %>%
adorn_title("combined")%>%
knitr::kable()
}
termlist <- c("Term30","Term60","Term90")
lapply(termlist, termfun)
[[1]]
|Rec/Term30 |0 |1 |Total |
|:----------|:-----------|:----------|:-----------|
|1 |100.00% (1) |0.00% (0) |100.00% (1) |
|2 |50.00% (1) |50.00% (1) |100.00% (2) |
|3 |100.00% (5) |0.00% (0) |100.00% (5) |
|Total |87.50% (7) |12.50% (1) |100.00% (8) |
[[2]]
|Rec/Term60 |0 |1 |Total |
|:----------|:-----------|:-----------|:-----------|
|1 |0.00% (0) |100.00% (1) |100.00% (1) |
|2 |0.00% (0) |100.00% (2) |100.00% (2) |
|3 |100.00% (5) |0.00% (0) |100.00% (5) |
|Total |62.50% (5) |37.50% (3) |100.00% (8) |
[[3]]
|Rec/Term90 |0 |1 |Total |
|:----------|:----------|:-----------|:-----------|
|1 |0.00% (0) |100.00% (1) |100.00% (1) |
|2 |0.00% (0) |100.00% (2) |100.00% (2) |
|3 |80.00% (4) |20.00% (1) |100.00% (5) |
|Total |50.00% (4) |50.00% (4) |100.00% (8) |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.