【发布时间】:2015-07-12 12:37:27
【问题描述】:
我想要的是一个矩阵,其中每个元素都是一个列表 本身。 请参阅以下示例:
1 2 3
1 1,2,4 1,2 1
2 Null 3,4,5,6 1,3
我看到了this 的帖子,并尝试了以下操作但出现错误:
b <- array()
b[j, i, ] <- A[i]
其中 A 是一个向量本身。 错误是:
Error in b[j, i, ] <- A[i] : incorrect number of subscripts
我应该如何定义和访问矩阵的每个元素以及包含列表的每个元素?
更新1:
b<-matrix(list(),nrow = length(d), ncol =length(c))
Error in b[j, i] <- A[i] : replacement has length zero
我想指定每个元素都是一个列表,然后尝试用从零到 n 不同长度的各种列表填充它。
更新2:
running what @BondedDust commented :
b<-matrix(rep(list(),(c*d)),,nrow = length(d), ncol =length(c))
Erorr in b[[j*nrow(b)+i]] <- A[i] : attempt to select less than one element
一个:
A[1]<-c(3) F[[1]]<-numeric(0) E[[1]]<-numeric(0)
A[2]<-c(1) F[2]<-c(1) E[2]<-c(1)
A[3]<-c(1) F[3]<-c(2) E[[3]]<-numeric(0)
A[[4]]<-c(1,3) F[[4]]<-numeric(0) E[[4]]<-numeric(0)
A[5]<-c(4) F[5]<-c(4) E[5]<-c(4)
A:第 1 行、F:第 2 行和 E:第 3 行的值。(第 5 列)
这个数据不是这种形式,也没有存储在任何地方,它们是另一个函数的输出(有函数代替A[i])。数据只是显示了A看起来可重复的剂量和因此显示矩阵中的位置并返回 update2 中的error。A[4] 是第 4 列第 2 行的元素。
【问题讨论】:
-
@DavidArenburg 不是
matrix(list(c(1,2,3)))他需要的吗? -
矩阵中并非不可能有列表元素。
-
matrix的文档并没有说只能将原子向量作为参数提供给 data 参数。它只说as.vector将删除属性。 (去除了它们类的 Dates、POSIXct 和 factor 参数。)如果它们只是列表(毕竟是另一种形式的“R 向量”),那么对数据没有暴力。 -
编辑。将对象设置为空数组不允许您进行动态数组尺寸标注。这可能是其他语言中数组的一个特性,但在 R 中不是。
-
此外,正如我之前解释的,R 矩阵在 column-major order 中被索引。我想你可以随时使用
t()函数,如果需要像你描述的那样赦免的话。