【问题标题】:Why is dim null for lists?为什么列表的暗淡为空?
【发布时间】:2019-10-12 13:17:17
【问题描述】:

为什么列表一般返回dim null? 还有为什么向量不被认为是一维矩阵,因为结果与带有暗淡的 Null 相同?

为什么在列表的情况下是dim null而不是m*n?

numbers<-c(1,2,1,1,2,3,1,1,1)
dim(numbers)<-c(3,3)    
dim( lapply(numbers[1,],sum))

dim( lapply(numbers[1,],sum)) 空值 既然有3个list,为什么不是3*1呢?

【问题讨论】:

  • 但是列表呢?
  • @H1,请作为答案发帖!

标签: r list lapply


【解决方案1】:

默认的dim()函数返回一个对象的dim属性,它需要是一个整数值的向量。列表可以有dim 属性,尽管它们通常没有。例如,

x <- array(as.list(1:10), c(5, 2))
dim(x)
# [1] 5 2
typeof(x)
# [1] "list"
typeof(x[1,1])
# [1] "list"

请注意,dim() 在内部是一个泛型函数,因此您可以为其定义 S3 方法。例如,

x <- structure(1, class = "foobar")
dim.foobar <- function(x) 1:3
dim(x)
# [1] 1 2 3

对于数据帧,调用dim.data.frame 方法。

您问为什么向量不被视为一维矩阵。在 R 表示法中,矩阵总是有 2 维;其他维数的东西是数组。向量不被认为是一维数组的原因是没有足够的收益。矩阵是有维数的向量,所以如果向量是数组,你将有两个维度来跟踪。

但是,当将矩阵乘以向量时,将向量视为行矩阵或列矩阵是很有用的,即一维为 1 的二维数组。完成此操作后,R 会自动以适当的方式处理向量,遵循线性代数的一般规则。

【讨论】:

    猜你喜欢
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多