考虑两个向量:
R> l
[1] "a" "b" "c" "d" "e" "f"
R> s
[1] "b" "d" "f"
我无法对要从采样中删除的索引进行硬编码。
如何从l
s
中的元素进行抽样
答案 0 :(得分:2)
你可以试试这个
l <-c("a","b","c","d","e","f")
s <- c("b", "d", "f")
l2 <- l[!l %in% s] # elements present in "l" and not in "s"
sample(l2, 10, replace = TRUE)
答案 1 :(得分:2)
我刚用post
找到它sample(l[-c(match(s, l))])
PS:对不起,在搜索之前要求提问。
编辑: -
对于载体:
R> l <- c(1:5000)
R> s <- c(100:1100)
我跑了micobenchmark:
R> microbenchmark(func(l, s), sample(l[-c(match(s, l))], 10), times=1000L)
这里,func()定义如下:
R> func <- function(l, s) {
l2 <- l[!l %in% s] # elements present in "l" and not in "s"
return(sample(l2, 10, replace = TRUE))
}
返回微基准:
Unit: microseconds
expr min lq mean median uq max neval cld
func(l, s) 218.7 221.3 234.1 222.1 229.5 2937 1000 a
sample(l[-c(match(s, l))], 10) 222.5 226.9 238.8 227.8 235.7 2933 1000 a
我猜,他们的表现非常可比。