在 R 中以迭代方式将数据集大小减少一个
Reducing dataset size by one iteratively in R
我有一个数据集,我想将其减 1 直到达到特定条件。我希望所有数据集单独保存并合并到一个列表中。例如手动我可以做:
a<-mtcars[1:nrow(mtcars),]
b<-mtcars[2:nrow(mtcars),]
c<-mtcars[3:nrow(mtcars),]
d<-mtcars[4:nrow(mtcars),]
e<-mtcars[5:nrow(mtcars),]
f<-mtcars[6:nrow(mtcars),]
g<-mtcars[7:nrow(mtcars),]
h<-mtcars[8:nrow(mtcars),]
i<-mtcars[9:nrow(mtcars),]
j<-mtcars[10:nrow(mtcars),]
as.list(a,b,c,d,e,f,g,h,i,j)
假设第 10 行满足某些条件,例如某个日期。我怎么能迭代地做到这一点?我尝试了一个 for 循环,但最终只有最后一个数据集作为输出,而不是每个递增的更小的数据集。
你在 for 循环的正确道路上。如果您只返回最后一个,那么您创建结果框架的方式是错误的。
dataList = list()
for (i in seq(1, 10)){
dataList[[i]] = mtcars[i:nrow(mtcars),]
}
已更改以匹配编辑
两件事:
没有理由重复 n:nrow(mtcars),只需将 -(1:i)
作为行索引传递即可。
要包含条件,您可以将 ifelse 与 break()
一起使用。
例如,这里是 for 循环,条件是它将重复这个循环 7 次:
mc<-list()
for(i in 1:nrow(mtcars)) ifelse(i==7,break(),mc[[i]]<-mtcars[-(1:i),])
我有一个数据集,我想将其减 1 直到达到特定条件。我希望所有数据集单独保存并合并到一个列表中。例如手动我可以做:
a<-mtcars[1:nrow(mtcars),]
b<-mtcars[2:nrow(mtcars),]
c<-mtcars[3:nrow(mtcars),]
d<-mtcars[4:nrow(mtcars),]
e<-mtcars[5:nrow(mtcars),]
f<-mtcars[6:nrow(mtcars),]
g<-mtcars[7:nrow(mtcars),]
h<-mtcars[8:nrow(mtcars),]
i<-mtcars[9:nrow(mtcars),]
j<-mtcars[10:nrow(mtcars),]
as.list(a,b,c,d,e,f,g,h,i,j)
假设第 10 行满足某些条件,例如某个日期。我怎么能迭代地做到这一点?我尝试了一个 for 循环,但最终只有最后一个数据集作为输出,而不是每个递增的更小的数据集。
你在 for 循环的正确道路上。如果您只返回最后一个,那么您创建结果框架的方式是错误的。
dataList = list()
for (i in seq(1, 10)){
dataList[[i]] = mtcars[i:nrow(mtcars),]
}
已更改以匹配编辑
两件事:
没有理由重复 n:nrow(mtcars),只需将
-(1:i)
作为行索引传递即可。要包含条件,您可以将 ifelse 与
break()
一起使用。
例如,这里是 for 循环,条件是它将重复这个循环 7 次:
mc<-list()
for(i in 1:nrow(mtcars)) ifelse(i==7,break(),mc[[i]]<-mtcars[-(1:i),])