2016-01-06 66 views
0

我想爲因子x的每個級別創建邏輯變量。如何在R中的多級因子中創建邏輯變量

從一個因素 x <- factor(c('apple','orange','apple','peach'))

所以我會得到每三個變量的x長度:

apple = c(T,F,T,F) 
orange = c(F,T,F,F) 
peach = c(F,F,F,T) 

有一個函數來做到這一點?

+0

可能重複[如何創建虛擬變量](http://stackoverflow.com/q/12758075/903061)。 – Gregor

+1

更好的可能性:[在R中生成一個虛擬變量](http://stackoverflow.com/q/11952706/903061)。 – Gregor

+0

...從中我會推薦'model.matrix(〜x + 0)' – Gregor

回答

1

試試這個。它創建這些向量的數據幀:

x <- as.factor(c('apple','orange','apple','peach')) 
df <- data.frame(sapply(levels(x), function(l) l == x)) 
+0

正是我所需要的,但是你會解釋'function(l)l == x'的作用嗎?哦,我明白了......這麼簡單...... – WojciechF

+0

sapply將迭代從水平(x)中獲取每個水平的因子,將每個水平傳遞給l是其中一個水平的函數。然後,l == x正在檢查哪個x值與傳遞給l的單個級別匹配。該操作將爲該單一級別返回一個真/假向量。 – Gopala

+0

你可以通過簡單的'apple'== x來看看。 – Gopala

相關問題