#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. Если вы решили это самостоятельно, вы можете добавить это в качестве ответа ниже.