1

これは非常に単純であるべきだと思うのでイライラしますが、何時間も費やしています。

データ フレーム内の列のリストの行の合計を取得したいのですが、そのリスト (ユーザーによって設定される) は長さ 1、つまり 1 つの列番号である可能性が非常に高くなります。

rowSums1列を合計することはできません。

rowsum完全に解読不能であることがわかったグループを使用します。私は何年にもわたってこの例を試してきましたが、それが何のためにあるのかはまだよくわかりませんが、省略することはできません.

ここでの一番の答えはrowSumsor apply;を使用しています。2 番目の使用.SDand lapplybut は、R のヘルプには表示されず、以前にも見たこともない:=and.SDおよびその他の用語を使用しています。これは、検索と混乱の別のワームホールを開くだけです。

だから:私が使用できるものはありますか:

x <- matrix(runif(100), ncol = 5)
goodcols <- c(1,3,5)
y <- rowSums(x[,goodcols])

1 または >1 の goodcols で動作しますか?

前もって感謝します。現在、私は使用を検討しています:

ifelse(length(goodcols)>1,
y<-rowSums(x[,goodcols]),
y<-x[,goodcols])
4

1 に答える 1

4

data.framematrix、またはに 1 列しか残っていない場合array、R はそれを に強制しvectorます。寸法を保持するには、パラメータを使用する必要がありますdrop
Dropによって定義されます (で読むことができますhelp("[.data.frame")):

論理的。TRUE の場合、結果は可能な限り低い次元に強制されます。デフォルトでは、列が 1 つしか残っていない場合は削除されますが、行が 1 つしか残っていない場合は削除されません。

したがって、あなたの場合、rowSums列の数に関係なく作業したい場合は、次のコードを使用する必要があります。

y <- rowSums(x[, goodcols, drop = FALSE])
于 2015-09-01T12:00:59.607 に答える