在R中堆叠字符向量

时间:2013-04-24 03:51:57

标签: r character unique

我在数据框中有两个因子变量,最终目标是组合两列以查找两个列组合的唯一因子列表(变量一中的一些因子在变量二中重复)。为此,我需要一个长度为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)

我不明白我在第二行的第二行收到的错误消息。我知道这一定很简单,但我看不到它!如果有人知道或有更优雅的方式来解决这个问题,请回复!

1 个答案:

答案 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作为字符而非首先因素。