我有两个向量 (1,2,3,4,5,6,7,8)
和 (543,544,545)
我想将第二个向量从第三个位置开始插入到第一个向量中,结果为 (1,2,543,544,545,6,7,8)
x <- c(1:8)
r <- c(543:545)
# I tried
replace(x,3,r)
# or like
replace(3:length(r),1,r)
但是它没有起作用。
最简单的方法是使用c()
:
x <- 1:8
r <- c(543,544,545)
c(x[1:2], r ,x[3:length(x)])
另一种选项是使用 append()
:
append(x, values=r, after=2)
现在使用的代码和之前使用 c()
函数时做的一模一样。
如果不是想追加新的数值而是替换已有的数值,那么应该选择 Frank 的解决方案。
replace(x, list=2+1:length(r), r)
或手动
x[2+1:length(r)] <- r
此操作修改x
而非创建新向量。
x
不变的类似物是 \
[<-`(x, 2+1:length(r), r)`,但那太丑了。 - Franky
。然后,您指定向量中的特定位置(即x
),以便替换向量的一部分。在这种情况下,您需要告诉从x
的第3个位置开始有多少个位置(即x[c(3:(3+z))]
)。您将y
赋值给x
中指定的位置。x <- 1:8
y <- 543:545
z <- length(y)-1
x[c(3:(3+z))] <- y
#x
#[1] 1 2 543 544 545 6 7 8
r
,而非 y
。 - Frankx[3:5] <- r
。 - Dan Lewer
?replace
的帮助文档,你会发现replace(x, 2+1:length(r), r)
是有效的。 - Frank