在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)
我不明白我在第二条最后一行得到的错误消息。我知道这一定很简单,但我看不到它!如果有人知道或有一个更优雅的方式来解决这个问题,请回复!
答
答案就在帮助文件在?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
如果您使用了'combined 2013-04-24 04:00:10