用R中另一个命名向量的值替换命名向量中的值

Ern*_*nie 3 r

我有两个向量,说:

x <- c(2, 3, 5, 7, 9, 11)
names(x) <- c("a", "b", "c", "d", "e", "f")
y <- c(33,44,55)
names(y) <- c("b", "d", "f")
Run Code Online (Sandbox Code Playgroud)

所以那x

a  b  c  d  e  f 
2  3  5  7  9 11 
Run Code Online (Sandbox Code Playgroud)

并且y

 b  d  f 
33 44 55 
Run Code Online (Sandbox Code Playgroud)

我想xy具有相同名称的值替换其中的值,以便结果将是新的x

a  b  c  d  e  f 
2 33  5 44  9 55 
Run Code Online (Sandbox Code Playgroud)

我敢肯定这已经在某个地方得到了回答,但是我找不到。

Ric*_*ven 5

您可以将的名称y用作的子集x,然后替换为y

x[names(y)] <- y
x
# a  b  c  d  e  f 
# 2 33  5 44  9 55 
Run Code Online (Sandbox Code Playgroud)

另一个选择是replace(),它基本上与上面的操作相同,但是返回结果并且不更改x

replace(x, names(y), y)
# a  b  c  d  e  f 
# 2 33  5 44  9 55 
Run Code Online (Sandbox Code Playgroud)