繁体   English   中英

R 相关 - 如何使用 lapply 和 list 在 r 中循环自定义 function?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM