[英]Apply multiple-output function to vector in R
我有一个 function 以列表形式返回多个输出。 我想将此 function 应用于输入向量,并将结果收集到向量列表中。 下面的代码可以满足我的要求,但有几个缺点。 首先,我需要明确给出 f 的 output 列表的名称“正方形”和“立方体”。 其次,我需要为每个 x 值评估 function f 两次。 有没有办法在避免缺点的同时获得与下面的代码相同的 output ?
f <- function(x) list(square = x^2, cube = x^3)
x <- c(1, 2, 3)
desired.output <- list(
square = sapply(X = x, FUN = function(x) f(x)$square),
cube = sapply(X = x, FUN = function(x) f(x)$cube)
)
这应该只是在 x 上应用 function
f(x)
#$square
#[1] 1 4 9
#$cube
#[1] 1 8 27
你可以试试 function do.call
这个
do.call(f, list(x))
你可以试试 -
> mapply(f, x)
[,1] [,2] [,3]
square 1 4 9
cube 1 8 27
或者
> Map(f,x)
[[1]]
[[1]]$square
[1] 1
[[1]]$cube
[1] 1
[[2]]
[[2]]$square
[1] 4
[[2]]$cube
[1] 8
[[3]]
[[3]]$square
[1] 9
[[3]]$cube
[1] 27
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.