簡體   English   中英

如何查找向量中出現少於X次的所有值

[英]How to find all values which only appear less than X times in a vector

我有一個向量,在這種情況下是字符向量。 我希望所有元素僅在向量中出現一次,但是對於1以外的限制,解決方案應該可以推廣。

如果使用table功能,我可以手動選擇它們。 我以為解決方案看起來像

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

但是首先,我不知道插槽名稱必須輸入??,並且在table對象上搜索文檔導致我無處可去。

其次,雖然table()的文檔說它返回“類為“ table”的對象”,並嘗試使用一些隨機詞代替??來進行上述操作,但我沒有遇到“ no such slot”錯誤,但是

錯誤:嘗試從沒有插槽的基本類(“功能”)的對象獲取插槽“頻率”

這似乎表明即使我知道插槽名稱也無法執行上述操作。

那么,什么是正確的解決方案,以及如何在我的單獨列得到table ,當我需要他們?

D'oh,表函數的文檔使我對虛構的對象插槽進行了追逐。

無論table()函數返回什么,它都充當簡單的數值向量。 所以我的解決方案的想法寫成:

threshold <- 1
frequencies <- table(myVector)
frequencies[frequencies <= threshold] 

您不需要此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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM