在 R 中使用 rbind 创建数据框

Creating data frame with rbind in R

我正在尝试使用 R 创建 7 个 table 并在嵌套的 for 循环中使用 'rbind' 将它们放在一起。但是 table 中的数据不完整,只有最后添加的数据集在 table.

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))
        }
      }
    }

创建的table '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>

不知何故,它没有正确地将行添加到 table(最后一个除外),所以我认为错误一定在

中的某处

'assign(paste0("df_",i),rbind(paste0("df_",i),df_add))'

.

我认为它缺少 'get' 函数

 assign(paste0("df_",i),rbind(paste0("df_",i),df_add))

应该变成:

 assign(paste0("df_",i),rbind(get(paste0("df_",i)),df_add))

希望对您有所帮助

戈塔维亚诺尼