在R中一次性创建多个长度自定义的全0向量的实现方法
R 生成不同长度全0向量的实现方案
错误原因说明
- 原for循环问题:每次迭代都将已有
differences对象和新生成的向量打包为新的两层列表,迭代次数越多嵌套层级越深,无法直接访问单个向量。 - 原lapply问题:lapply第一个参数是需要遍历的对象,你传入
0只会执行1次,还将整个kj向量传给rep的times参数,不符合参数要求自然报错。
最优实现(lapply一行代码)
直接遍历kj的每个长度值,生成对应长度的全0向量,返回的就是标准列表结构,可直接用[[i]]访问单个向量,[i]访问子列表:
differences <- lapply(kj, rep, x = 0)
修正后的for循环实现
如果偏好for循环写法,提前初始化固定长度的空列表即可,效率比动态扩展更高:
# 初始化和kj长度一致的空列表 differences <- vector("list", length(kj)) for (i in seq_along(kj)) { differences[[i]] <- rep(0, kj[i]) }
内容的提问来源于stack exchange,提问作者rtuh
相关产品推荐
相关产品推荐

