В этом примере у меня есть два списка
tiers <- list("tier 1", "tier 2", "tier 3")
main <- list(data.frame(a = c("this", "that")),
data.frame(a = c("the other", "that too")),
data.frame(a = c("once more", "kilgore trout")))
, и я бы хотел mutate()
каждый элемент списка (то есть data.frame()
) в main
, добавив значение в tiers
из соответствующего элемента.Я думал, что mapply()
сделает это:
library(dplyr)
mapply(function(x, y) y %>% mutate(tier = x), tiers, main)
, но я получаю неожиданный результат
> mapply(function(x, y) y %>% mutate(tier = x), tiers, main)
[,1] [,2] [,3]
a factor,2 factor,2 factor,2
tier Character,2 Character,2 Character
, тогда как я ожидал, что
[[1]]
a tier
1 this tier 1
2 that tier 1
[[2]]
a tier
1 the other tier 2
2 that too tier 2
[[3]]
a tier
1 once more tier 3
2 kilgore trout tier 3
Использую ли яmapply()
правильно?Если нет, то что я должен использовать, чтобы получить ожидаемый результат?Следует отметить, что фактические данные могут содержать до n
элементов списка;Я не могу жестко закодировать любые значения в терминах 1:n
.