Сравнение значений вектора с первым возвращает значения NA

#r #loops

#r #циклы

Вопрос:

Я пытаюсь сравнить элементы i 1 вектора с первым элементом самого вектора.

У меня есть следующий фрейм данных:

 snsr_dt snsr_ts value
2009-05-25  2009-05-25 08:00    0
2012-07-08  2012-07-08 08:00    96
2014-01-27  2014-01-27 08:00    0
2015-02-15  2015-02-15 08:00    298
2015-10-10  2015-10-10 08:00    260
2017-04-21  2017-04-21 08:00    402
  

Я попробовал следующий подход:

 test<-c()
for (i in nrow(mydataframe)){
    test[i]=dataframe[i,3]-dataframe[1,3]
}
  

Я получаю следующие результаты:

 [1]  NA  NA  NA  NA  NA 402
  

Что я делаю не так?

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

1. Опечатка в for цикле, for (i in 1:nrow(mydataframe))

2. предполагая, что value это вектор столбца, который вы хотите сравнить: mydataframe$value - mydataframe$value[1]

Ответ №1:

Для этого нам не нужен цикл, поскольку операция векторизована

 test <- mydataframe[,3] - mydataframe[,3][1]
  

Что касается проблемы с циклом, то выполняется только цикл по одной строке, то есть по последней строке ( nrow ) набора данных. Вместо этого это может быть seq_len(nrow(mydataframe))