Indexing 如何替换1';使用r中的查找表,在每列中使用不同的值
我想根据列的不同,用不同的值替换每列中的“1” df 钥匙 期望输出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
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