R语言从存储矩阵对象的列表中实现有放回随机抽样的问题咨询
问题原因
R的sample()函数默认针对原子向量设计,直接将列表作为参数传入时,内部类型判断会出现偏差,无法正确触发针对列表元素的随机抽样逻辑,因此会出现返回前N个元素的异常结果。
正确实现方案
你可以先对列表的索引进行随机抽样,再用抽样得到的索引提取对应矩阵元素,代码如下:
# 生成列表的完整索引序列,进行有放回随机抽样 sampled_index <- sample(seq_along(v), size = 11, replace = TRUE) # 用抽样索引提取对应矩阵,存储到新列表对象 sampled_matrices <- v[sampled_index]
方案说明
seq_along(v)会自动生成和列表v长度一致的整数索引序列,本次案例中就是1到100,保证覆盖列表的所有元素- 基于索引提取列表元素的方式兼容性极强,无论列表内存储的是矩阵还是其他类型对象都可以正常运行
- 最终得到的
sampled_matrices就是包含11个随机抽取矩阵的新列表,完全符合有放回抽样的要求
内容的提问来源于stack exchange,提问作者Fumia
相关产品推荐
相关产品推荐

