我有兩個向量(1,2,3,4,5,6,7,8)
和(543,544,545)
我想將放第二個到第一個從第三位置開始的,所以結果(1,2,543,544,545,6,7,8)
把矢量作爲子矢量到另一個向量R
x <- c(1:8)
r <- c(543:545)
# I tried
replace(x,3,r)
# or like
replace(3:length(r),1,r)
但它不起作用。
我有兩個向量(1,2,3,4,5,6,7,8)
和(543,544,545)
我想將放第二個到第一個從第三位置開始的,所以結果(1,2,543,544,545,6,7,8)
把矢量作爲子矢量到另一個向量R
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()
之前。
如果你想替換值,而不是追加新的,你應該弗蘭克的解決方案去
replace(x, list=2+1:length(r), r)
或手動
x[2+1:length(r)] <- r
它修改x
而不是創建新載體。
Martin,這兩個選項都沒有給出慾望輸出,這個想法是用(543,544,545)替換(3,4,5),而不是插入第二個向量。 –
然後這應該在問題中明確;) –
同意,但在他的防守他把期望的輸出在第二行 –
這是另一種方式。你會得到你想要使用的矢量的長度,在我的方法中是y
。然後,您可以指示向量中的特定位置(即,x
),以替換該向量的一部分。在這種情況下,您需要告知x
(即x[c(3:(3+z))]
)中第3個位置需要多少個頭寸。您在x
的指定位置分配y
。
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
如果你閱讀'replace'的幫助,你會看到'replace(x,2 + 1:length(r),r)'確實有效。 – Frank