从函数返回两个对象

Returning two objects from a function

我有两个列表对象,它们是从两个数据集创建的。我创建了一个从每个列表中删除一些随机组件的函数。我希望函数以 return 这两个列表作为输出。

例如,当我 运行 example_func 时,我想获得新的 list1list2 对象。我希望函数的输出替换我的旧列表对象并看起来像预期的输出。

这可以在 R 中完成吗?


value <- rep(c(1:5), 10)
id <- rep(c("A", "B"), 25)
df <- data.frame(ID = as.factor(id),
                 value = value)

list1 <- df %>% 
  group_by(ID) %>% 
  group_split()

value <- rep(c(8:12), 10)
id <- rep(c("A", "B"), 25)
df <- data.frame(ID = as.factor(id),
                 value = value)

list2 <- df %>% 
  group_by(ID) %>% 
  group_split()

example_func <- function(l1, l2){
  l1 <- l1[-c(1)]
  l2 <- l2[c(1)]
}

# Expected outcome
expected_list1 <- list1[-c(1)]
expected_list2 <- list2[-c(1)]

您可以像这样使用 zeallot 运算符:

library(zeallot)

example_func <- function(l1, l2){
  l1 <- l1[-c(1)]
  l2 <- l2[c(1)]
  list(l1, l2)
}

c(expected_list1, expected_list2) %<-% example_func(list1, list2)