2012-12-12 37 views
-1
res_log <- lapply(res, log2) 

res的列表是一个list和每个元素是一个MATRIX。我收到错误。将函数应用于矩阵

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

这两个命令我的机器上工作。我使用了下面的矩阵:'res < - matrix(1:9,3)' –

+1

你确定你没有'lapply(res,1,log2)'吗?这会给你确切的错误信息你描述 –

+0

@SvenHohenstein:对我来说它给 - > **申请(RES,1,LOG2):暗淡(X)必须有一个积极的长度** – alap

回答

3

如果要计算列表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 
+1

@ ZsurzsaLaszlo-Andras现在工作吗? –

+0

它正在工作,所以我接受。再次感谢你! – alap

相关问题