使用R中的apply函数来表示特定的函数值

时间:2018-06-13 11:50:14

标签: r matrix apply lapply sapply

所以我有一个具有多个返回值的函数。这方面的一个例子如下:

Test.function <- function(x){
a <- x^2
b <- x^3
c <- x^4
return(list(
"a" =  a,
"b" =  b,
"c"  = c
))
}

现在,我想使用'apply'函数只提取其中一个值。例如'b'。下面的代码生成一个包含10个对象的列表,每个对象都带有a,b和c的向量。我想创建一个只有b的矩阵。

apply(matrix(rnorm(200),nrow = 20), 2, FUN= Test.function)

1 个答案:

答案 0 :(得分:1)

使用lapplysapply,您可以对名为&#34; b&#34;的列表中的元素进行子集化。

set.seed(100)
fulloutput <- apply(matrix(rnorm(200),nrow = 20), 2, FUN= Test.function)
lapply(fulloutput, "[[", "b")

或者在一行中:

sapply(apply(matrix(rnorm(200),nrow = 20), 2, FUN= Test.function), "[[", "b")