我正在尝试用R创建7个表,并在嵌套的for循环中使用'rbind'将它们组合在一起。但是,表中的数据不完整,只有最后添加的数据集在表中。
matrixbox<-function(x,y){
df<-subset(y,X2D.CODE==x)
res<-sapply(df$STORAGE,function(z){length(unlist(strsplit(as.character(z),",")))-1})
res_count<-sum(res)
df_res<-data.frame(Matrixboxnr=as.character(x),TYPE=as.character(df$TYPE[1]),Count=res_count,prmdiag=as.character(df$ORIGIN[1]),stringsAsFactors=FALSE)
print(df_res)
return(df_res)
}
lc_exports<-c("citrat","csf","csf_shock","edta","serum_clot","serum_wo","urin")
for(i in lc_exports){
assign(paste0("df_",i),data.frame(Matrixboxnr=character(),TYPE=character(),Count=numeric(),prmdiag=character(),stringsAsFactors=FALSE))
print(i)
for(j in unique(na.omit(x_bl_delc$Matrixboxnr))){
print(j)
if(j %in% get(i)$X2D.CODE){
df_add<-matrixbox(j,get(i))
assign(paste0("df_",i),rbind(paste0("df_",i),df_add))
}
}
}
创建的表'df_urin'例如仅包含2个对象:
> Matrixboxnr TYPE Count prmdiag
> 1 df_urin df_urin df_urin df_urin
> 2 106100 Urine 500 µl - Matrixbox 12 NA
虽然它实际上应该包含
[1] "142082"
Matrixboxnr TYPE Count prmdiag
1 142082 Urine 500 �l - Matrixbox 12 <NA>
[1] "105713"
Matrixboxnr TYPE Count prmdiag
1 105713 Urine 500 �l - Matrixbox 12 <NA>
[1] "101051"
Matrixboxnr TYPE Count prmdiag
1 101051 Urine 500 �l - Matrixbox 12 <NA>
[1] "146912"
Matrixboxnr TYPE Count prmdiag
1 146912 Urine 500 �l - Matrixbox 12 <NA>
[1] "147254"
Matrixboxnr TYPE Count prmdiag
1 147254 Urine 500 �l - Matrixbox 12 <NA>
[1] "146072"
Matrixboxnr TYPE Count prmdiag
1 146072 Urine 500 �l - Matrixbox 12 <NA>
[1] "103269"
Matrixboxnr TYPE Count prmdiag
1 103269 Urine 500 �l - Matrixbox 12 <NA>
[1] "106100"
Matrixboxnr TYPE Count prmdiag
1 106100 Urine 500 �l - Matrixbox 12 <NA>
不知何故,它没有核心地将行添加到表中(除了最后一行),所以我认为错误必须在某处
'分配(paste0( “DF _”,i)中,rbind(paste0( “DF _”,i)中,df_add))'
答案 0 :(得分:1)
我认为它错过了“获取”功能
assign(paste0("df_",i),rbind(paste0("df_",i),df_add))
应该成为:
assign(paste0("df_",i),rbind(get(paste0("df_",i)),df_add))
希望这会有所帮助
Gottavianoni