我在数据框中有两个因子变量,最终目标是组合两列以查找两个列组合的唯一因子列表(变量一中的一些因子在变量二中重复)。为此,我需要一个长度为2n的向量来执行“独特”功能(下面的代码中的堆叠向量)。但是,我在使用'stack'函数组合这两个向量时遇到了问题。
x<-rep(c("a","b", "c"), each=3)
x<-as.vector(x)
y<-rep(c("a","b", "z"), each=3)
y<-as.vector(y)
combined<-data.frame(x,y)
stacked<-stack(combined)
unique(stacked)
我不明白我在第二行的第二行收到的错误消息。我知道这一定很简单,但我看不到它!如果有人知道或有更优雅的方式来解决这个问题,请回复!
答案 0 :(得分:3)
答案在?stack
Note that ‘stack’ applies to _vectors_ (as determined by
‘is.vector’): non-vector columns (e.g., factors) will be ignored
(with a warning as from R 2.15.0).
> is.vector(factor("a"))
[1] FALSE
尝试:
stacked <- stack(lapply(combined,as.character))
stacked
values ind
1 a x
2 a x
3 a x
4 b x
5 b x
6 b x
...
..或者正如@Dwin指出的那样,您可以通过在combined
来电中指定stringsAsFactors=FALSE
来创建data.frame
作为字符而非首先因素。