将函数应用于矩阵列表

时间:2012-12-12 16:45:42

标签: r list matrix lapply

res_log <- lapply(res, log2)

reslist,每个元素都是MATRIX。我收到了错误。

Error in match.fun(FUN) : '1' is not a function, character or symbol

1 个答案:

答案 0 :(得分:4)

如果要计算列表res中所有矩阵值的基数2对数,可以使用以下命令:

lapply(res, log2)

命令apply(res, 1, log2)不起作用,因为列表没有行。这只能用于单个矩阵对象(或数组)。

一个例子:

res <- rep(list(matrix(1:9, 3)), 2)

# [[1]]
#      [,1] [,2] [,3]
# [1,]    1    4    7
# [2,]    2    5    8
# [3,]    3    6    9
# 
# [[2]]
#       [,1] [,2] [,3]
# [1,]    1    4    7
# [2,]    2    5    8
# [3,]    3    6    9


lapply(res, log2)

# [[1]]
#          [,1]     [,2]     [,3]
# [1,] 0.000000 2.000000 2.807355
# [2,] 1.000000 2.321928 3.000000
# [3,] 1.584963 2.584963 3.169925
# 
# [[2]]
#          [,1]     [,2]     [,3]
# [1,] 0.000000 2.000000 2.807355
# [2,] 1.000000 2.321928 3.000000
# [3,] 1.584963 2.584963 3.169925