如何在R语言循环中按列值创建变量并截取前15行观测值?
问题修正方案
你的代码存在几个直接导致运行失败的问题,修正后的版本及问题说明如下:
原代码的问题
- 第二个
slice函数错误引用了原始数据集dff,而非刚过滤得到的结果,等于完全没用到过滤后的数据 slice语法写错了,dff.1:15是无效写法,正确格式应为slice(目标数据集, 行范围)- 未预先初始化列表
mvendidos,直接用[[i]]赋值可能触发索引不存在的错误
修正后的代码
先初始化长度为10的空列表,再执行循环处理:
# 初始化空列表 mvendidos <- vector("list", 10) for (i in 1:10){ mvendidos[[i]] <- dff %>% filter(grupo == i) %>% slice(1:15) }
如果不习惯用管道符%>%,也可以拆分写法:
mvendidos <- vector("list", 10) for (i in 1:10){ # 先按grupo字段过滤数据 temp_data <- filter(dff, grupo == i) # 截取前15条后存入列表对应位置 mvendidos[[i]] <- slice(temp_data, 1:15) }
运行后,mvendidos列表的每个元素会分别对应grupo取值1到10的数据集,且每个数据集仅保留前15条观测值。
内容的提问来源于stack exchange,提问作者KingP
相关产品推荐
相关产品推荐

