首页 > 解决方案 > R创建列表或矩阵

问题描述

如果我重复此代码

x<-1:6
n<-40
M<-200
y<-replicate(M,as.numeric(table(sample(x,n,1))))
str(y)

有时 R 决定创建一个矩阵,有时它创建一个列表。你能解释一下原因吗?我如何确定它是矩阵还是列表?

如果您选择的 M 非常小,例如 10,它几乎总是会创建一个矩阵。如果您选择 M 非常大,例如 2000,它将创建一个列表。

标签: rlistmatrix

解决方案


x当并非所有数字都被采样时,您会得到一个列表。

您始终可以使用返回列表simplify = FALSE

y <- replicate(M, as.numeric(table(sample(x,n,TRUE))), simplify = FALSE)

此外,您正在使用1设置replace参数。最好使用逻辑参数,即TRUE


要始终返回一个矩阵,我们可以这样做:

sapply(y, `[`, x)

这将为长度不相等的值附加NA's。


推荐阅读