1

我有一个向量,在这种情况下是一个字符向量。我想要在向量中只出现一次的所有元素,但是对于 1 以外的限制,解决方案应该是可推广的。

如果我使用该table功能,我可以手动选择它们。我认为解决方案看起来像

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

但首先,我不知道必须进入 ?? 的插槽名称,并且搜索该table对象的文档导致我无处可去。

其次,虽然table() 的文档说它返回“类“表”的对象”,但尝试使用一些随机词而不是 ?? 进行上述操作,但我没有收到“没有这样的插槽”错误,但是

错误:试图从没有槽的基本类(“函数”)的对象中获取槽“频率”

这似乎表明即使我知道插槽名称,上述内容也不起作用。

table那么正确的解决方案是什么,当我需要它们时,如何在单独的列中获取它们?

4

2 回答 2

4

D'oh,表函数的文档使我对虚构的对象槽进行了愉快的追逐。

无论 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 回答