R: Лучший способ создать переменное число операторов присваивания - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть скрипт, который я должен периодически запускать, где я использую различное количество операторов присваивания в R, например:

r5$NWord_1<-ifelse(r5$Match==1,NA,r5$NWord_1)
r5$NWord_2<-ifelse(r5$Match==2,NA,r5$NWord_2)
r5$NWord_3<-ifelse(r5$Match==3,NA,r5$NWord_3)
r5$NWord_4<-ifelse(r5$Match==4,NA,r5$NWord_4)
r5$NWord_5<-ifelse(r5$Match==5,NA,r5$NWord_5)
r5$NWord_6<-ifelse(r5$Match==6,NA,r5$NWord_6)

r5$NWord_7<-ifelse(r5$Match==7,NA,r5$NWord_7)

Проблема в том, что число переменных «NWord» изменяется от запуска к запуску обычно между 5 и 7). У меня есть количество переменных "NWord", хранящихся отдельно как размер.

Size<-5

Я пробовал следующее, но get () работает только с объектами, а не со столбцами данных.

for(i in 1:Size){
    get(paste("r5$NWord_",i,sep=""))<-ifelse(r5$Match==i,NA,get(paste("r5$NWord_",i,sep="")))
}

Мне любопытно: как лучше всего автоматизировать этот процесс, чтобы мне не приходилось каждый раз вручную запускать подмножество этих операторов?

1 Ответ

0 голосов
/ 01 ноября 2018

Для тех, кто заинтересован: 1) Импорт данных в широком формате (это то, что система позволяет мне загружать). 2) Данные экспорта должны быть в широком формате для загрузки в систему. Так как это всего лишь несколько из ~ 200 переменных в наборе данных, переход от одного к другому к широкому и длинному, а затем от длинного к широкому (возможно, несколько раз) кажется громоздким и подверженным ошибкам. Поэтому я придумал это:

idx1<-which(colnames(r5)=="NWord_1")
idx2<-which(colnames(r5)==paste("NWord_",Size,sep=""))
for(i in idx1:idx2){
    r5[,i]<-ifelse(r5$Match==1,NA,r5[,i])
}

Кажется, все работает нормально, но я не уверен, что это самый эффективный способ кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...