迭代子集行&;用于替换R中映射表中的值的列

迭代子集行&;用于替换R中映射表中的值的列,r,dplyr,subset,R,Dplyr,Subset,我想替换df中特定列的值,这些值与mapping\u df中的from变量相匹配变量应与df中的列名匹配 mapping_df <- read.table(text = " variable from to b 1 X c 1 Y ", header = TRUE, stringsAsFactors = FALSE) df <- read.table(text = " a b c d

我想替换
df
中特定列的值,这些值与
mapping\u df
中的
from
变量相匹配<
映射中的code>变量
应与
df中的列名匹配

mapping_df <- read.table(text = "  variable from to 
                 b 1 X 
                 c 1 Y ", header = TRUE, stringsAsFactors = FALSE)

df <- read.table(text = "  a b c d
                 X 1 1 3 0 
                 Y 1 2 2 0 
                 Z 0 3 1 0 ", header = TRUE, stringsAsFactors = FALSE)

mapping_df删除
get
并改为子集

for(i in 1:nrow(mapping_df)){
  df[df[, mapping_df[i, 'variable']] == mapping_df[i, 'from'], mapping_df[i, 'variable']] <- mapping_df[i, 'to']
}

> df
  a b c d
X 1 X 3 0
Y 1 2 2 0
Z 0 3 Y 0
for(1中的i:nrow(映射){
df[df[,mapping_-df[i',variable']]==mapping_-df[i',from'],mapping_-df[i',variable']]df
a、b、c、d
x1x30
Y 12 2 0
z03y0

manotheshark的答案对我很有用

我还发现我可以为基本子集的行提交一个索引,最终也可以正常工作

for(i in 1:nrow(mapping_df)){

    index <- which(df[,mapping_df[i, 'variable']] == mapping_df[i, 'from'])
    df[index , mapping_df[i, 'variable']] <- mapping_df[i, 'to']
}
for(1中的i:nrow(映射){

我明白了,谢谢你的回答!我还通过创建一个索引并按索引对行进行子集来解决这个问题。我也将发布我的答案。
for(i in 1:nrow(mapping_df)){
  df[df[, mapping_df[i, 'variable']] == mapping_df[i, 'from'], mapping_df[i, 'variable']] <- mapping_df[i, 'to']
}

> df
  a b c d
X 1 X 3 0
Y 1 2 2 0
Z 0 3 Y 0
for(i in 1:nrow(mapping_df)){

    index <- which(df[,mapping_df[i, 'variable']] == mapping_df[i, 'from'])
    df[index , mapping_df[i, 'variable']] <- mapping_df[i, 'to']
}