【问题标题】:Applying a function to a list of matrices将函数应用于矩阵列表
【发布时间】:2012-12-12 16:45:42
【问题描述】:
res_log <- lapply(res, log2)

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

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

【问题讨论】:

  • 这两个命令都可以在我的机器上运行。我使用了以下矩阵:res &lt;- matrix(1:9, 3)
  • 你确定不是lapply(res, 1, log2)?这将为您提供您描述的确切错误消息
  • @SvenHohenstein : 对我来说它给出了 -> apply(res, 1, log2) : dim(X) 必须有一个正长度
  • 听起来问题在于您使用的矩阵,而不是您对apply 的使用。如果您需要帮助,请发布有关您的矩阵的信息。
  • str(res) 的结果是什么?

标签: r list matrix lapply


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 2015-05-08
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    相关资源
    最近更新 更多