Почему мой R-фрейм данных не копируется в инструкции ifelse?

#r #dataframe #if-statement

#r #dataframe #if-statement

Вопрос:

У меня есть dataframe tas_i с 875000 строками, как показано ниже:

     head(tas_i)

  x tas year month_no
1 1  NA 1884        1
2 2  NA 1884        1
3 3  NA 1884        1
4 4  NA 1884        1
5 5  NA 1884        1
6 6  NA 1884        1
 

У меня есть относительно простой оператор ifelse, который просто не работает (см. Ниже). Что я делаю не так? Мой объект tas в конечном итоге является «списком» чисел, а не «фреймом данных».

 > i
[1] 1
> j
[1] 1884
> tas <- ifelse(i==1 amp; j==1884, tas_i, rbind(tas,tas_i))
> nrow(tas_i)
[1] 875000
> nrow(tas)
NULL
> tas_i[1:6,]
  x tas year month_no
1 1  NA 1884        1
2 2  NA 1884        1
3 3  NA 1884        1
4 4  NA 1884        1
5 5  NA 1884        1
6 6  NA 1884        1
> tas[1:6,]
Error in tas[1:6, ] : incorrect number of dimensions
class(tas)
[1] "list"
> class(tas_i)
[1] "data.frame"
 

Обратите внимание, что если я выполняю tas <- tas_i , он работает нормально, а tas является фреймом данных

 tas <- tas_i
class(tas)
[1] "data.frame"
 

выделенный текст

Комментарии:

1. Вы используете это в цикле? Какова ваша конечная цель здесь?

2. Я решил эту проблему, изменив оператор ifelse на if (i== 1 amp; j==1884) tas <- tas_i else tas <- rbind(tas,tas_i) . В ifelse должна быть какая-то странная вещь, которая возвращает список.

3. Да, это будет в цикле for..next

4. Если вы решили это самостоятельно, вы можете добавить это в качестве ответа ниже.