Я хочу пропустить кадр данных и создать новый столбец с надписью «YES», если 2-й элемент в строке «ANOMALY 'и' НЕТ 'в противном случае.пытаясь векторизовать эту операцию в R, и я не понимаю, почему это неверно
for (j in 1:nrow(residual_anomalies)){
if (all(residual_anomalies[j,2:4]=='ANOMALY')) {residual_anomalies$Prediction_Anomaly[j] <- 'YES'} else
residual_anomalies$Prediction_Anomaly[j] <- 'NO'
}
Так что в настоящее время это то, что я использую. Он работает, но он принимает большой вычислительный показатель производительности, поэтому я пытаюсь его векторизовать. То, что я делал до сих пор, это создать функцию, которая возвращает «ДА» или «НЕТ» на основе, если элементы строки были «ANOMALY».
vote_for_anomaly <- function(x){
if (all(x)=='ANOMALY') return('YES') else
return('NO')}
И тогда я пытаюсь использовать функцию применения в R
aggregates <- apply(residual_anomalies[,2:4],1,vote_for_anomaly)
, но затем я получаю следующие ошибки/предупреждения
Error in if (all(x) == "ANOMALY") return("ANOMALY") else return("NO SIGNAL") :
missing value where TRUE/FALSE needed
In addition: Warning message:
In all(x) : coercing argument of type 'character' to logical
Может кто-нибудь сказать мне, почему это ISN Я работаю и как мне это изменить?
Вы можете использовать эти данные для тестирования и назвать его residual_anomalies
1 ANOMALY ANOMALY ANOMALY ANOMALY
2 ANOMALY NO SIGNAL ANOMALY ANOMALY
3 ANOMALY ANOMALY ANOMALY ANOMALY
4 NO SIGNAL ANOMALY NO SIGNAL ANOMALY
5 ANOMALY ANOMALY ANOMALY ANOMALY
6 NO SIGNAL NO SIGNAL ANOMALY ANOMALY
Может быть 'if (all (x == 'ANOMALY')) ...'? – lukeA
Ничего себе! Я не могу поверить, что это было нечто незначительное ... спасибо! – Glassjawed