【发布时间】:2022-01-23 06:27:10
【问题描述】:
我有一大段杂乱无章的 R 代码,其中包含大量难看的重复。有机会大规模减少它。从这段代码开始:
table <-
risk_assigned %>%
group_by(rental_type, room_type) %>%
summarise_all(funs( sum(!is.na(.)) / length(.) ) ) %>%
select(-c(device_id, ts, room, hhi, temp)) %>%
adorn_pct_formatting()
我想将它概括为一个函数,以便它可以重复使用。
LayKable = function(kableDetails) {
table <-
risk_assigned %>%
group_by(kableDetails$group1 , kableDetails$group2) %>%
summarise_all(funs( sum(!is.na(.)) / length(.) ) ) #%>%
select(-c(device_id, ts, room, hhi, temp)) %>%
adorn_pct_formatting()
...
kable <- table
return(kable)
}
kableDetails <- list(
group1 = "rental_type",
group2 = "room_type"
)
newKable <- LayKable(kableDetails)
这种相当半心半意的尝试有助于解释我想要做什么。如何将内容传递给列表中的这个函数(我是 C 程序员,假装它是一个结构)。
【问题讨论】:
-
如果您总是要使用
group1和group2列表元素,为什么还要一个参数kableDetails?为什么不使用LayKable("rental_type", "room_type")之类的显式参数呢?还有,为什么risk_assigned是全局变量而不是传入函数? -
这是一个最小的例子。我有 6 或 7 个参数要传入。它在列表中更整洁。分配的风险是一个全局变量。
标签: r