r - 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,它将创建一个列表。
解决方案
x
当并非所有数字都被采样时,您会得到一个列表。
您始终可以使用返回列表simplify = FALSE
。
y <- replicate(M, as.numeric(table(sample(x,n,TRUE))), simplify = FALSE)
此外,您正在使用1
设置replace
参数。最好使用逻辑参数,即TRUE
。
要始终返回一个矩阵,我们可以这样做:
sapply(y, `[`, x)
这将为长度不相等的值附加NA
's。
推荐阅读
- python - 使用每行和向量之间的余弦距离创建数据框列
- python - Python 用于字符串列表,如果字符串包含字符,则将其与下一个列表元素连接
- matlab - MATLAB:绘图时在颜色之前循环遍历线条
- javascript - 比较两个数组和相同值的索引变化数据
- html - 如果 4 + 8 = 12 那么为什么我的引导网格仍然溢出页面边缘?
- html - 无法单击() href 元素
- bash - 使用 .bashrc 保持 X11 转发
- openstack - 可以 ping 但不能 ssh 我的 openstack 实例
- c# - 如何从桌面应用程序读取注册表项
- microsoft-graph-api - 使用 Microsoft Graph 重置用户密码 *和*将密码发送到指定的电子邮件地址