【发布时间】:2019-12-22 20:38:04
【问题描述】:
我有一个非常大的数据集,其中包含分类标签 a 和一个向量 b,其中包含数据集中所有可能的标签:
a <- c(1,1,3,2) # artificial data
b <- c(1,2,3,4) # fixed categories
现在我想为a 中的每个观察找到所有剩余类别的集合(即b 的元素,不包括a 中的给定观察)。从剩下的这些类别中,我想随机抽取一个。
我使用循环的方法是
goal <- numeric() # container for results
for(i in 1:4){
d <- setdiff(b, a[i]) # find the categories except the one observed in the data
goal[i] <- sample(d,1) # sample one of the remaining categories randomly
}
goal
[1] 4 4 1 1
但是,这必须多次执行并应用于非常大的数据集。有没有人有更高效的版本来达到预期的结果?
编辑:
不幸的是,akrun 的函数比原来的循环慢。如果有人提出具有竞争力的创意想法,我很高兴听到!
【问题讨论】:
-
完成,谢谢指出。
标签: r set sample set-difference