Indexing 如何替换1';使用r中的查找表,在每列中使用不同的值

Indexing 如何替换1';使用r中的查找表,在每列中使用不同的值,indexing,replace,Indexing,Replace,我想根据列的不同,用不同的值替换每列中的“1” df 钥匙 期望输出 SNP1 SNP2 SNP3 5 2 7 2 6 0 5 0 7 任何帮助都将不胜感激。谢谢 编辑:我的密钥文件有不同顺序的列,并且缺少一些。 钥匙 Tim Biegeleisen回答是否合适,但要求键的列顺序相同。是否可以匹配df和key中的列,然后用key中的值替换df中的1?我们可以在这里使用mapplymapply是一个很好的候选者,因为它允许我们同时迭代两个数据帧中的每对列 fun <- function(v

我想根据列的不同,用不同的值替换每列中的“1”

df

钥匙

期望输出

SNP1 SNP2 SNP3
5 2 7
2 6 0
5 0 7
任何帮助都将不胜感激。谢谢

编辑:我的密钥文件有不同顺序的列,并且缺少一些。 钥匙


Tim Biegeleisen回答是否合适,但要求键的列顺序相同。是否可以匹配df和key中的列,然后用key中的值替换df中的1?

我们可以在这里使用
mapply
mapply
是一个很好的候选者,因为它允许我们同时迭代两个数据帧中的每对列

fun <- function(v1, v2) {
    v1[v1 == 1] = v2[1]
    return(v1)
}
df <- mapply(fun, df, key)

df
     SNP1 SNP2 SNP3
[1,]    5    2    7
[2,]    2    6    0
[3,]    5    0    7

fun哇,谢谢你的快速回答。只是需要在mapply系列中用乐趣代替测试。
SNP1 SNP2 SNP3
5 2 7
2 6 0
5 0 7
SNP3 SNP1
7 5
fun <- function(v1, v2) {
    v1[v1 == 1] = v2[1]
    return(v1)
}
df <- mapply(fun, df, key)

df
     SNP1 SNP2 SNP3
[1,]    5    2    7
[2,]    2    6    0
[3,]    5    0    7