在R中堆积字符向量

问题描述:

我在数据框中有两个因子变量,最终目标是将两个列组合起来以找到两个列合并的唯一因子的列表(变量1中的一些因子在变量二)。要做到这一点,我需要一个长度为2n的矢量来执行“独特”功能(下面代码中的堆叠矢量)。不过,我在使用'堆栈'功能组合这两个向量时遇到了问题。在R中堆积字符向量

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) 

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

+3

如果您使用了'combined 2013-04-24 04:00:10

答案就在帮助文件在?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是字符,而不是因素通过在您的data.frame呼叫中指定stringsAsFactors=FALSE来获得第一名。

+0

对不起,迪文让我的观点好得多。 – joran 2013-04-24 04:00:34