私はRの初心者です。私のコードでは特殊なケースをデバッグしようとしています。 次の行では、確かに存在する列に基づいてベクトルx
がソートされています。当然、私はsorted.data
が同じであると予想して、ほとんどの場合そうです。order of()in return type()in R
print (paste("x=",typeof(x)))
print (x)
sorted.data <- x[order(x[[max.column]]), ]
print (paste("type of sorted=", typeof(sorted.data)))
print (sorted.data)
ほとんどの場合、上記のコードの出力は次のようになります。
[1] "x= list"
V1 V5
8 10 0
16 7 0
18 7 0
20 1 96
24 9 0
[1] "type of sorted= list"
V1 V5
8 10 0
16 7 0
18 7 0
24 9 0
31 5 0
しかし、いくつかの点で、出力は次のようになります。
[1] "x= list" # Expected. a vector with 1 column
V1
8 10
16 7
18 7
24 9
26 10
[1] "type of sorted= integer" # This shouldn't happen
[1] 0 0 0 1 1 1 1 2 2 3 3 4 4 4
間違って行くことができるもの?なぜ戻り値が変わるのですか?
'のX [順序([[max.column]] x)は、]'本当に 'list'であればうまくいかないはずです。それは' data.frame'ではないと確信していますか? (これは、とにかくここに表示されている方法です)。これは 'data.frame'と仮定し、行を索引付けする際のデフォルトのモードです。*結果は最小の可能次元に強制されます* *それはベクトルに強制されます。 'x [order(x [[max.column]]),, drops = TRUE]'を試してください。 ( '' help( "[[" ''](https://stat.ethz.ch/R-manual/R-devel/library/base/html/Extract.html)を参照してください。) – r2evans
@ r2evans実際には、 drop = FALSE'でなければなりません。 (ちょうどそれをテストしました) 'sorted.data < - x [order(x [[ncol(x)])、、drop = FALSE]'。 –
もちろん...両方の面をテストして、間違ったものをコピー/貼り付け、確認してください。 – r2evans