gpt4 book ai didi

复制由其他向量确定的向量中的某些值

转载 作者:行者123 更新时间:2023-12-04 11:03:39 26 4
gpt4 key购买 nike

我有一个值向量(比如 1:10 ),并且想要在其中重复某些值 2 次或更多次,由另一个向量确定(比如 c(3,4,6,8) )。在这个例子中,结果是 c(1,2,3,3,4,4,5,6,6,7,8,8,9,10)重复2次时。

这应该适用于任意长度范围的向量(如 200:600 ),第二个向量包含在第一个向量中。有没有方便的方法来实现这一目标?

最佳答案

Akrun 是一种更紧凑的方法,但这也行得通

# get rep vector
reps <- rep(1L, 10L)
reps[c(3,4,6,8)] <- 2L

rep(1:10, reps)
[1] 1 2 3 3 4 4 5 6 6 7 8 8 9 10

这里的见解是 rep将在第二个参数中采用与第一个参数相同长度的整数向量,指示第一个参数的每个元素的重复次数。

请注意,此解决方案依赖于 c(3,4,6,8) 的假设是要重复的元素的索引或位置。这种情况下,那么d-b的评论就单行了
rep(x, (seq_along(x) %in% c(3,4,6,8)) + 1)

如果相反, c(3,4,6,8)表示要重复的值,然后是docendo-discimus的超紧凑代码,
rep(x, (x %in% c(3,4,6,8)) * (n-1) +1)

其中 n 可以调整以改变重复次数。如果您需要多次调用它,则可以将其汇总为一个函数,例如
myReps <- function(x, y, n) rep(x, (x %in% y) * (n-1) +1)

并称为
myReps(1:10, c(3,4,6,8), 2)

在目前的情况下。

关于复制由其他向量确定的向量中的某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43186235/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com