我正在使用庫poLCA。使用該庫之一的主命令具有如下創建公式:在R中創建涉及任意數量變量的公式
f <- cbind(V1,V2,V3)~1
該命令被調用後:
poLCA(f,data0,...)
V1,V2,V3是變量中的名稱數據集數據0。我正在運行模擬,我需要多次更改公式。有時它有3個變量,有時是4個,有時更多。
如果我嘗試類似:
f <- cbind(get(names(data0)[1]),get(names(data0)[2]),get(names(data0)[3]))~1
它工作正常。但是,我必須事先知道我將使用多少變量。我想定義任意矢量
vars0 <- c(1,5,17,21)
,然後創建公式如下
f<- cbind(get(names(data0)[var0]))
Unfortunaly我得到一個錯誤。我懷疑答案可能涉及某種形式的適用,但我仍然不太清楚這個函數的工作原理。預先感謝您的幫助。
使用do.call沒有任何問題。這是一個很好的解釋工具,以及as.name和類似的功能。 –
我明白爲什麼它看起來很駭人,但用'paste'操作和'as.formula'構建公式的另一種方式看起來也很駭人聽聞。 –
看不出你爲什麼需要這樣做。爲什麼不將子集值賦給你一個矩陣? – hadley