R:创建各种赋值语句的最佳方法

时间:2018-11-01 10:32:11

标签: r loops

我有一个脚本,必须定期运行,在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 :(得分:0)

对于那些感兴趣的人: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])
}

似乎可以正常工作,但是,我不确定这是编写此代码的最有效方法。