![](/img/trans.png)
[英]R find count of values in vector x which are greater than values in vector y
[英]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.