如何根据身份替换列表的元素

Car*_*rpa 4 r list

我有一个这样的列表:

list1 <- as.list(c('a', 'b', 'c', 'd', 'e', 'f'))
Run Code Online (Sandbox Code Playgroud)

我想根据以下内容替换其所有元素:

new_val <- c('c'=1,'e'=2,'d'=3,'b'=4,'f'=5,'a'=6)
Run Code Online (Sandbox Code Playgroud)

预期结果应该是这样的:

list3 <- c(6, 4, 1, 3, 2, 5)
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用不同的函数,如replace() 和modifyList(),但我很挣扎。你可以帮帮我吗?

mar*_*kus 6

尝试

new_val[unlist(list1)]
# a b c d e f 
# 6 4 1 3 2 5 
Run Code Online (Sandbox Code Playgroud)

unname如果您不需要命名向量作为结果,请使用:

new_val[unlist(list1)] |> 
  unname()
Run Code Online (Sandbox Code Playgroud)

使用基管运算符来编写上述内容的一种更奇特的方式|>

list1 |> 
  unlist() |> 
  `[`(x = new_val, i = _) |> 
  unname()
Run Code Online (Sandbox Code Playgroud)

但不确定它是否使本示例中的代码更容易理解。