4

可以说我有以下情况:

我正在尝试将 switch 语句应用于测试中的每个术语 wheretest = 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 个参数仍然是测试和切换,并且我能够传入一个向量进行映射?

4

2 回答 2

7

然后我会回答,你可以这样做:

mapping[test]
# AA bb 
# 5  7 
于 2013-04-03T03:52:04.757 回答
3

这似乎适用于将 sapply 与 switch 一起使用。但坦率地说,弗洛德尔的反应是最简单的。

test<-c(test,test)
sapply(test,function(x) do.call("switch",as.list(c(x,mapping))))
# AA  bb  AA  bb 
#"5" "7" "5" "7"
于 2013-04-03T03:15:29.350 回答