在这里,我有一个数字向量,我想要将val_to_add
添加到每个元素中,并将那些额外的值附加到sample_vec
中,并且最大值不能超过max_val
。
set.seed(53)
max_val = 50
val_to_add = 2
sample_vec <- sort(sample(1:max_val, 8))
[1] 3 5 6 15 29 30 35 50
例如,我想要将
sample_vec
中的每个元素加上2
。对于第一个元素,它应该是3:(3+2)
,即3 4 5
。
重复的值应被丢弃,此时最大值应为50
。期望的输出应如下所示:[1] 3 4 5 6 7 8 15 16 17 29 30 31 32 35 36 37 50
这是我的当前代码:
out_vec <- unique(c(sapply(sample_vec, function(x) sequence(val_to_add + 1, from = x))))
out_vec[out_vec <= max_val]
[1] 3 4 5 6 7 8 15 16 17 29 30 31 32 35 36 37 50
是否有现有的函数可以在基本R中执行这种操作?
unlist(lapply())
而不是sapply()
有什么原因吗? - benson23"c"
:sort(unique(c(sapply(...
- zx8754unique(sort(sapply(0:val_to_add, function(i) sample_vec + i)))
也可以完成这个任务。 - benson23microbenchmark
时,您的lapply
版本似乎比sapply
变体更有效。 - benson23