【发布时间】:2017-05-17 10:23:29
【问题描述】:
我有一个数据框:
a = c(1, 2, 3, 4, 9)
b = c(5, 6, 7, 8, 10)
c = c('xx','yy','zz', 'kk', 'bb')
df = data.frame(a, b, c)
> df
a b c
1 1 5 xx
2 2 6 yy
3 3 7 zz
4 4 8 kk
5 9 10 bb
还有一个整数向量:
> names
[1] 1 3 5 8
Levels: 1 3 5 8
我可以返回df 中的索引,其中names 匹配列a 或b,使用match:
> match(names, df$a)
[1] 1 3 NA NA
> match(names, df$b)
[1] NA NA 1 4
我想结合上面两个语句,对于返回的索引,返回c列中对应的值,对于那个特定的索引,这样我的输出是:
out = [1] "xx" "zz" "xx" "kk"
我尝试过:
> df$c[match(names, df$a) | match(names, df$b)]
[1] "xx" "yy" "zz" "kk" "bb"
但由于这是一个布尔测试,它不能按要求运行。
我怎样才能达到我想要的输出?非常感谢。
【问题讨论】: