用粘贴写出一个公式

时间:2015-01-12 17:15:36

标签: r formula paste

目前我有一段代码看起来像这个

as.formula(paste0('Y~',paste('factor','(', names(te)[w],')', sep="",collapse="+")))

响应(Y)和预测变量TRY1,Y2,UYP21和GHT9是数据帧te的列名,w是索引列名称的向量,因为只为模型选择了来自数据帧的特定列。

我的问题是这段代码会将所有预测变量的公式写为factor()。我如何写一篇文章来决定w = 12(te的第12列)它应该不是因子而是as.numeric。 更常见的是它应该使用class()检查数据框列的类,然后决定是使用因子还是数字。所需的输出是

Y~factor(TRY1)+factor(TRY2)+factor(UYP21)+as.numeric(GHT9)

当前代码生成

Y~factor(TRY1)+factor(TRY2)+factor(UYP21)+factor(GHT9)

提供的答案非常有效,但问题在于它真的很糟糕,因为数字不仅仅是数字

1 个答案:

答案 0 :(得分:0)

这不是最好的编码,但也许有帮助。

forFormula <- NULL
for(i in 1:dim(te)[2]){ 
  one <- paste0(class(te[,i]), "(", colnames(te)[i], ")")
  forFormula <- c(forFormula, one)
}
forFormula <- as.formula(paste("Y ~", (paste(forFormula, collapse="+"))))