R 基于命名向量对列进行变异,如查找表

R 基于命名向量对列进行变异,如查找表,r,R,尝试使用match(): 如果我们反转“named_vect”的名称、值,则可以使用recode x y text_name 1 1 2.4290706 blah 2 2 0.5817137 dog 3 3 0.7392442 cat # x y text_name #1 1 -2.0009292 blah #2 2 0.3337772 dog #3 3 1.1713251 cat

尝试使用
match()


如果我们反转“named_vect”的名称、值,则可以使用
recode

  x         y text_name
1 1 2.4290706      blah
2 2 0.5817137       dog
3 3 0.7392442       cat
#  x          y text_name
#1 1 -2.0009292      blah
#2 2  0.3337772       dog
#3 3  1.1713251       cat

或者使用
base R
,我们通过转换为
字符来匹配“x”,以匹配“命名向量”的名称

  x         y text_name
1 1 2.4290706      blah
2 2 0.5817137       dog
3 3 0.7392442       cat
#  x          y text_name
#1 1 -2.0009292      blah
#2 2  0.3337772       dog
#3 3  1.1713251       cat

blah$text\u name使用
match

blah$text_name <- named_vect[as.character(blah$x)]
堆栈
+
合并

transform(
  blah,
  text_name = names(named_vect)[match(x, named_vect)]
)
给予


A
数据表
选项

  x          y text_name
1 1  0.6207273      blah
2 2 -0.2710539       dog
3 3  2.0738347       cat
给予

blah$text_name <- named_vect[as.character(blah$x)]
transform(
  blah,
  text_name = names(named_vect)[match(x, named_vect)]
)
merge(blah, setNames(stack(named_vect), c("x", "text_name")))
  x          y text_name
1 1  0.6207273      blah
2 2 -0.2710539       dog
3 3  2.0738347       cat
library(data.table)
data.table(blah)[data.table(stack(named_vect)), on = .(x = values)]
   x          y  ind
1: 1 -1.2302276 blah
2: 2 -0.8073727  dog
3: 3 -0.2389972  cat