在特定位置将一个向量的元素替换为另一个向量的元素

瓦坎·坦卡(Wakan Tanka)

我有以下数据:

orig.vec <- c(1:10)
idx      <- c(3,5,6)
rep.vec  <- list(c(7,7,7), c(8,8,8), c(9,9,9))

1号 我怎样才能插入的元素rep.vecorig.vec在位置包含在idx和移orig.vec值到左/右?

所需结果:

  1. orig.vec 右移: 1,2,7,7,7,3,4,8,8,8,5,9,9,9,6,7,8,9,10
  2. orig.vec 向左移动: 1,2,3,7,7,7,4,5,8,8,8,6,9,9,9,7,8,9,10

2号 如何替换元素中orig.vec包含atidx元素rep.vec

所需结果:

1,2,7,7,7,4,8,8,8,9,9,9,7,8,9,10

拉尔
orig.vec <- c(1:10)
idx      <- c(3,5,6)
rep.vec  <- list(c(7,7,7), c(8,8,8), c(9,9,9))


left  <- Map('c', idx, rep.vec)
right <- Map('c', rep.vec, idx)
repl  <- rep.vec

l <- as.list(orig.vec)
l[idx] <- left
l[idx] <- right
l[idx] <- repl
unlist(l)

## left
# [1]  1  2  3  7  7  7  4  5  8  8  8  6  9  9  9  7  8  9 10
## right
# [1]  1  2  7  7  7  3  4  8  8  8  5  9  9  9  6  7  8  9 10
## repl
# [1]  1  2  7  7  7  4  8  8  8  9  9  9  7  8  9 10

编辑:作为一个功能

insert <- function(x, index, replacement, how = c('replace','left','right')) {
  how <- match.arg(how)
  repl <- switch (how,
    replace = replacement,
    left = Map('c', index, replacement),
    right = Map('c', replacement, index)
  )
  x[index] <- repl
  unlist(x)
}

sapply(c('replace','left','right'), insert,
       x = orig.vec, index = idx, replacement = rep.vec)

# $replace
#  [1]  1  2  7  7  7  4  8  8  8  9  9  9  7  8  9 10
# 
# $left
#  [1]  1  2  3  7  7  7  4  5  8  8  8  6  9  9  9  7  8  9 10
# 
# $right
#  [1]  1  2  7  7  7  3  4  8  8  8  5  9  9  9  6  7  8  9 10

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将一个向量的元素复制到另一个向量

推力访问向量元素的另一个向量

向量元素是另一个向量Matlab的索引

将向量的向量元素复制到另一个向量

根据R中另一个向量中定义的数字位置查找向量的元素

按位置 [R] 从另一个向量填充向量上的空元素

将一个元素向量并行转换为另一个元素向量,而无需对后者进行初始化

来自一个向量的元素在具有R的另一个向量中的位置

在MATLAB中找到一个向量中元素在另一个向量中的位置

如何从另一个相同的向量中替换一个元素,但另一个向量不会改变?

对象安全的将元素从向量的末尾移动到另一个向量的末尾

将向量的每个元素添加到另一个向量

将向量分配给另一个向量后缺少元素

将向量与另一个向量的每个元素进行比较

将向量 (A) 中的 NA 替换为另一个向量 (B) 中的特定值,并将向量 (B) 中的复制值强制替换为 NA

迭代一个向量并根据元素创建另一个向量

根据另一个向量中的元素过滤/复制一个向量

使用R将一个向量的元素分配给另一个向量

如何将一个矩阵的元素替换为另一个

将向量元素和分配给另一个元素的并行算法

如何从另一个向量的另一个第一个元素减去向量中的第一个元素?

Javascript /根据另一个元素的位置定位一个元素

R:通过将另一个向量 'b' 中的值添加到向量 'a' 中的前一个元素来增加向量 'a' 中元素的值

向量的每个元素乘以另一个向量的每个元素

循环以删除向量的重复元素并添加另一个向量的对应元素

使元素向量小于另一个向量的每个元素

如何将向量的每个元素的幂提高到另一个向量的每个元素的幂?

如何使用bash脚本将文件特定位置的文本替换为另一个文件中的文本?

如何将一个元素定位到另一个元素的左侧?