使用开关的sapply

时间:2013-04-03 03:00:19

标签: r

假设我有以下情况:

我正在尝试将switch语句应用于测试中的每个字词test = c("AA","bb")mapping = c("AA"=5,"bb"=7)

如果我这样做

sapply(test, switch, mapping )

我得到了

    AA bb
AA  5  5
bb  7  7

而不是我想要的c(5,7)。有没有办法修改sapply(test,switch,...),以便前两个参数仍然是测试和切换,我能够传递一个映射的向量?

2 个答案:

答案 0 :(得分:5)

我会把它作为答案,你可以这样做:

mapping[test]
# AA bb 
# 5  7 

答案 1 :(得分:3)

这似乎适用于使用带开关的蓝宝石。但坦率地说,弗洛尔的反应最简单。

test<-c(test,test)
sapply(test,function(x) do.call("switch",as.list(c(x,mapping))))
# AA  bb  AA  bb 
#"5" "7" "5" "7"