0

データ フレームに 2 つの因子変数があり、最終的な目標は、両方の列を結合して、結合された両方の列の一意の因子のリストを見つけることです (変数 1 の因子の一部は変数 2 で繰り返されます)。これを行うには、「一意の」関数を実行するために長さ 2n のベクトルが必要です (以下のコードのスタック ベクトル)。ただし、「スタック」機能を使用してこれら 2 つのベクトルを結合する際に問題が発生しています。

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)

最後から 2 行目に表示されるエラー メッセージがわかりません。私はこれがとても単純なものに違いないことを知っていますが、私はそれを見ることができません! 誰かがこの問題を解決するよりエレガントな方法を知っているか、持っている場合は、返信してください!

4

1 に答える 1

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=FALSEdata.frame

于 2013-04-24T03:56:38.850 に答える