2015-10-12 4 views
0

У меня есть кадр данных с одним столбцом символов, а остальные столбцы состоят из целых чисел. То, что я хочу сделать, это проверить значения определенного столбца (5), а если они> 1000, вставьте это значение во вновь созданный вектор. До сих пор Ive придумал это решение, но я столкнулся с ошибкой в ​​моем выражении if. Любая помощь будет оценена по достоинству.Управление кадрами и векторами

D Является ли dataframe

greaterthan1000 <- vector ('numeric',length = nrow(D)) 
for (i in 1:nrow(D)){ 
    if(D[[i]][[5]]>1000){ 
    greaterthan1000 <- c(D[[i]][[5]]) 
    } 
} 

Ошибка:

Error in if (D[[i]][[5]] > 1000) { : missing value where TRUE/FALSE needed

В дополнение:

Warning message: In Ops.factor(B[[i]][[5]], 1000) : ‘>’ not meaningful for factors

+0

'greaterthan1000 = D [[5]] [D [[5]]> 1000]' будет работать, нет для цикла. В вашем коде замените 'D [[i]] [[5]]' на 'D [[5]] [i]'. – Gregor

+0

Хотя, учитывая ваше предупреждение, вы также можете проверить класс. Если 'class (D [[5]]) является фактором, вам, вероятно, понадобится' D [[5]] = as.numeric (as.character (D [[5]])). – Gregor

+0

ok, gimme a sec и плохо проверить оба. спасибо заранее, но – CnewbieWannabePro

ответ

0

Вы, вероятно, хотите

greaterthan1000 <- D[D[, 5] > 1000, 5] 
Смежные вопросы