2015-01-12 23 views
0

式目前我有一段代碼看起來liek此寫出與糊

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

響應(Y)和所述預測TRY1,Y2,UYP21和GHT9是數據幀Te和W中的columnames是一個矢量,它將列名索引,因爲只有來自數據框的特定列被選擇用於模型。

我的問題是這段代碼會將所有預測因子的公式寫爲factor()。我怎麼能寫一篇文章,決定對於w = 12(te的第12列),它應該不是因數,而是數字。 更通用的是,它應該用class()檢查數據幀列的類,然後決定是使用因子還是數值。所需的輸出是

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

,而當前的代碼產生

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

答案提供的作品非常好,但問題是,它真的woudl淨是as.numeric不僅numeri

+0

剛纔編輯的鱈魚 – wery

+0

你可以用'sapply(Y,類)'或'sapply(Y,is.factor)'找到類。 – akrun

+0

認爲這可能是一個不同的問題,因爲這是可以完成的唯一方法我想用某種if語句嗎?...... – wery

回答

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="+")))) 
+0

你好...唯一的問題是,它需要as.numeric()不僅數字....你可以取消這可能嗎? – wery