Cbind 数据框和输出使用粘贴创建标签

问题描述

我试图在创建标签的同时绑定一个数据集,但我无法让它工作。

我目前的尝试是:

 for (i in c(5,10,15)){
   or (g in c(1,2,3,4)){

     if (i==5) {data1 <- df[,6:10]}
     if (i==10) {data1 <- df[,6:15]}
     if (i==15) {data1 <- df[,6:20]}

     model1 <- Mclust(data=data1,G = g,modelNames = NULL,prior = NULL)
     df <- cbind(df,paste("g",g,"_",i,sep="")=model1$loglik)

   }
 }

正如您在最后一行代码中看到的,我正在尝试将现有数据集 (df) 与模型的输出 (model1$loglik) 与变量标签(例如 g1_5)绑定在一起。当我正常运行粘贴函数时,它返回一个字符串(例如,“g1_5”)但是当我在 cbind 中运行它时,它返回它作为代码,而不是它通常输出的字符串。

关于如何做到这一点的任何建议?如果有替代粘贴方法,或另一种方法可以使标签适应创建它们的特定循环,请告诉我!

解决方法

用于创建名称的 paste 上的 lhs 不起作用。分配 ([[) 或使用 setNames 可能更好。在第二行代码中,有一个错字。可能是for(g in c(1,2,3,4))

 ...
  df[[paste("g",g,"_",i,sep="")]] <- model1$loglik

  
  }
 }