Уменьшение размера набора данных на одну итеративно в R - PullRequest
0 голосов
/ 14 марта 2019

У меня есть набор данных, который я хотел бы уменьшить на 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, но в итоге в качестве выходных данных использовал только последний набор данных, а не каждый постепенно меньший набор данных.

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Две вещи:

  1. нет причин повторять n: nrow (mtcars), просто передайте -(1:i) в качестве индекса строк.

  2. для включения условия вы можете использовать ifelse с break().

Например, вот цикл for, при котором условие повторяет этот цикл 7 раз:

  mc<-list()
  for(i in 1:nrow(mtcars)) ifelse(i==7,break(),mc[[i]]<-mtcars[-(1:i),])
1 голос
/ 14 марта 2019

Вы были на правильном пути с циклом for.Если вы возвращаете только последний способ создания фрейма результатов, это неверно.

dataList = list()
for (i in seq(1, 10)){
    dataList[[i]] = mtcars[i:nrow(mtcars),]
}

изменено в соответствии с правкой

...