1

ベクトルがあります。この場合は文字ベクトルです。ベクトルに一度しか現れないすべての要素が必要ですが、解決策は 1 以外の制限に対して一般化できるはずです。

この機能を使えば、手動で選択できtableます。解決策は次のようになると思いました

frequencies <- table(myVector)
myVector[??@frequencies <= 1] 

しかし、まず、?? に入る必要があるスロット名がわからず、tableオブジェクトに関するドキュメントを検索してもどこにも行きません。

第二に、table() のドキュメントには「クラス「テーブル」のオブジェクト」が返されると書かれていますが、?? の代わりにランダムな単語を使用して上記を試してみましたが、「そのようなスロットはありません」というエラーは発生しませんでしたが、

エラー: スロットのない基本クラス (「関数」) のオブジェクトからスロット「周波数」を取得しようとしています

これは、スロット名を知っていても上記が機能しないことを示しているようです。

では、正しい解決策は何tableですか?必要なときに個別の列にアクセスするにはどうすればよいですか?

4

2 に答える 2

4

おっと、テーブル関数のドキュメントは、架空のオブジェクト スロットの楽しい追跡に私を導きました。

table() 関数が返すものは何でも、単純な数値ベクトルとして機能します。したがって、私のソリューションのアイデアは、次のように記述したときに機能します。

threshold <- 1
frequencies <- table(myVector)
frequencies[frequencies <= threshold] 
于 2013-12-28T10:51:13.277 に答える
2

これは必要ありませんtable

vector <- c(1, 0, 2, 2, 3, 2, 1, 4)
threshold <- 1
Filter(function (elem) length(which(vector == elem)) <= threshold, vector)
# [1] 0 3 4

を使用できますtableが、結果は数値ではなく文字列として取得されます。もちろん、それらを元に戻すことはできますが、ややエレガントではありません。

tab <- table(vector)
names(tab)[tab <= threshold]
# [1] "0" "3" "4"
于 2013-12-28T10:31:21.193 に答える