0
combine_cols<- function(primary,secondary,linker,column) {
require(data.table)
a<-data.table("Sample"=primary[,linker], primary[,column])
b<-data.table("Sample"=secondary[,linker], secondary[,column])
c <- merge(a, b, by = "Sample", all=TRUE)
c[,Status := ifelse(!is.na(c[,paste0(column,".x")]), paste0(column,".x"),
paste0(column,".y"))]
c[,`:=` (paste0(column,".x")=NULL, paste0(column,".y")= NULL)]
return(c)
}
mydata1<-data.frame("Sample"=c("100","101","102","103"),"Status"=c("Y","","","partial"))
mydata2<-data.frame("Sample"=c("100","101","102","103","106"),"Status"=c("NA","Y","","","Y"))
print((combine_cols(mydata1,mydata2,"Sample",c("Status"))))
我试图创建一个函数来合并拆分数据的列。 ifelse
行不起作用,因为paste0(column,".x")
被识别为字符而不是列名。我如何确保c[,paste0(column,".x")]
反映c$c[,paste0(column,".x")]
?更好的是,我如何修改这一行来处理列名称列表?在数据框中使用粘贴列调用
当命名一个对象时,请避免使用R函数,比如在你的代码中使用c。 –
可能的重复:[在data.table中使用动态列名](https://stackoverflow.com/q/14937165/903061) – Gregor