У меня есть дата-рамка в R с 11-миллиметровыми строками и 46 столбцами. Некоторые из полей содержат пустые строки (""). Мне нужно заменить эти пустые строки на NA, потому что write.dta
(в пакете foreign
) не может обрабатывать пустые строки.Замена пустых строк в кадре данных занимает очень много времени
Мой цикл for, однако, занимает очень много времени (около 15 минут на столбец, иногда R/сбои всей системы). Я запускаю RStudio (R 3.0.2) на Mac OS объемом 8 ГБ. Кто-нибудь знает более быстрый способ?
for (i in 1:46){
if (length(which(myDF[,i]==""))!=0) {
myDF[,i][which(myDF[,i]=="")]<-NA
}
}
'for'-петли в R заведомы медленно. Избегайте, когда это возможно. Вместо этого вы можете посмотреть 'apply',' sapply', 'lapply'. Или см. Решение @Zbynek. – MrGumble
@MrGumble не соответствует действительности. Не совсем. –