gpt4 book ai didi

r - 在函数中使用可变数量的组

转载 作者:行者123 更新时间:2023-12-04 21:05:12 25 4
gpt4 key购买 nike

我想了解是否以及如何使用 tidyverse 框架来实现这一点。

假设我有以下简单的功能:

my_fn <- function(list_char) {
data.frame(comma_separated = rep(paste0(list_char, collapse = ","),2),
second_col = "test",
stringsAsFactors = FALSE)
}

鉴于以下列表:
list_char <- list(name = "Chris", city = "London", language = "R")

如果您运行,我的功能可以正常工作:
my_fn(list_char)

但是,如果我们使用字符向量更改列表的某些元素,我们可以使用 dplyr::do通过以下方式实现以下功能:
list_char_mult <- list(name = c("Chris", "Mike"),
city = c("New York", "London"), language = "R")

expand.grid(list_char_mult, stringsAsFactors = FALSE) %>%
tbl_df() %>%
group_by_all() %>%
do(my_fn(list(name = .$name, city = .$city, language = "R")))

问题是如何编写一个函数来为具有可变数量元素的列表执行此操作。例如:
my_fn_generic <- function(list_char_mult) {
expand.grid(list_char_mult, stringsAsFactors = FALSE) %>%
tbl_df() %>%
group_by_all() %>%
do(my_fn(...))
}

谢谢

最佳答案

如果我理解你的问题,你可以使用 apply不分组:

expand.grid(list_char_mult, stringsAsFactors = FALSE) %>%
mutate(comma_separated = apply(., 1, paste, collapse=","))

expand.grid(list_char_mult, stringsAsFactors = FALSE) %>%
mutate(comma_separated = apply(., 1, my_fn))

   name     city language  comma_separated
1 Chris London R Chris,London,R
2 Chris New York R Chris,New York,R
3 Mike London R Mike,London,R
4 Mike New York R Mike,New York,R

关于r - 在函数中使用可变数量的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47995321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com