2016-01-06 82 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