Я новичок в R. Я запускаю цикл, который в основном сравнивает значения, содержащиеся в векторе ( p_change ), со значениями в столбце фрейма данных ( dat ), столбец IndicatorID , более конкретно).В случае, если IndicatorID и число в p_change совпадают, я хочу, чтобы значение в стандартизированном было вычтено на единицу (в той же строке).Это пример вектора ( p_change ):
p_change <- c(30101,92901,92031,90630,90282,10401)
Кадр данных ( dat ), с которым он сравнивается, выглядит следующим образом:
IndicatorID IndicatorName AreaName standardised variance
<int> <chr> <chr> <dbl> <dbl>
1 10401 1.04 - First time entrants to the youth justice system Hartlepool 0.601 13478.
2 10401 1.04 - First time entrants to the youth justice system Middlesbrough 0.481 13478.
3 10401 1.04 - First time entrants to the youth justice system Redcar and Cleveland 0.773 13478.
4 10401 1.04 - First time entrants to the youth justice system Stockton-on-Tees 0.732 13478.
5 10401 1.04 - First time entrants to the youth justice system Darlington 0.545 13478.
6 10401 1.04 - First time entrants to the youth justice system Halton 0.353 13478.
Цикл for, который я запускаю, таков:
for (i in 1:nrow(dat)) {
for (j in 1:length(p_change)) {
if (p_change[j]==dat[i,1]) {
dat[i,4] <- 1-dat[i,4] # Subtraction of a unit (polarity change)
} else {
i = i+1
}
}
}
Однако после его запуска выдается следующая ошибка 'Ошибка в if (p_change [j] == dat[i, 1]) {: пропущенное значение там, где требуется TRUE / FALSE '.Мне было интересно, если вы заметили ошибку, которая вызывает ошибку.Спасибо!