【发布时间】:2015-02-01 02:10:21
【问题描述】:
我正在尝试将一列的值与其他几列进行匹配,并创建一个逻辑矩阵,其中包含 TRUE 表示第一个匹配项,而 FALSE 表示所有其他值。
例如,使用以下数据:
var1 <- c("bush", "tree", "tree", "rock")
var2 <- c("tree", "bush", "rock", "rock")
var3 <- c("rock", "tree", "tree", "rock")
var4 <- c("rock", "tree", "tree", "tree")
var5 <- c("bush", "bush", "rock", "tree")
search_term <- c("tree", "tree", "bush", "tree")
df <- data.frame(var1, var2, var3, var4, var5, search_term, stringsAsFactors = FALSE)
> df
var1 var2 var3 var4 var5 search_term
1 bush tree rock rock bush tree
2 tree bush tree tree bush tree
3 tree rock tree tree rock bush
4 rock rock rock tree tree tree
我想在 var1-var5 中查找“search_term”,并最终创建一个逻辑矩阵,第一个值为 TRUE,其他所有值为 FALSE。
这样做:
df[, 1:5] == df$search_term
为所有匹配生成一个逻辑矩阵为 TRUE:
var1 var2 var3 var4 var5
[1,] FALSE TRUE FALSE FALSE FALSE
[2,] TRUE FALSE TRUE TRUE FALSE
[3,] FALSE FALSE FALSE FALSE FALSE
[4,] FALSE FALSE FALSE TRUE TRUE
我想要得到的是看起来像这样的东西,TRUE 仅适用于第一场比赛:
var1 var2 var3 var4 var5
[1,] FALSE TRUE FALSE FALSE FALSE
[2,] TRUE FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE FALSE FALSE
[4,] FALSE FALSE FALSE TRUE FALSE
提前致谢!
【问题讨论】:
标签: r