如何使用 rowwise 基于函数创建列表列
How to use rowwise to create a list column based on a function
假设我有这些数据和这个函数:
a <- data.frame(a= c(1,2,3), b=c(2,3,4))
fun <- function(q,y,z) {
r <- data.frame(a = c(q+y, q, q, y), b= c(q,q,q,z))
r
}
我想将该函数分别应用于每一行并创建一个列表列,其中每一行在这个新列中都有自己的数据框。
这是我尝试过的方法,但它给出了一个错误。
b <- a %>% rowwise(a) %>% mutate(list1 = list(fun(a, b, c)))
数据中没有 c
列。如果我们想为 'z'
传递默认值
library(dplyr)
out <- a %>%
rowwise %>%
mutate(list1 = list(fun(a, b, z = 0)))
-输出
out$list1
[[1]]
a b
1 3 1
2 1 1
3 1 1
4 2 0
[[2]]
a b
1 5 2
2 2 2
3 2 2
4 3 0
[[3]]
a b
1 7 3
2 3 3
3 3 3
4 4 0
假设我有这些数据和这个函数:
a <- data.frame(a= c(1,2,3), b=c(2,3,4))
fun <- function(q,y,z) {
r <- data.frame(a = c(q+y, q, q, y), b= c(q,q,q,z))
r
}
我想将该函数分别应用于每一行并创建一个列表列,其中每一行在这个新列中都有自己的数据框。
这是我尝试过的方法,但它给出了一个错误。
b <- a %>% rowwise(a) %>% mutate(list1 = list(fun(a, b, c)))
数据中没有 c
列。如果我们想为 'z'
library(dplyr)
out <- a %>%
rowwise %>%
mutate(list1 = list(fun(a, b, z = 0)))
-输出
out$list1
[[1]]
a b
1 3 1
2 1 1
3 1 1
4 2 0
[[2]]
a b
1 5 2
2 2 2
3 2 2
4 3 0
[[3]]
a b
1 7 3
2 3 3
3 3 3
4 4 0