switch()基于两个向量

时间:2015-10-30 20:58:46

标签: r

我正在建立一个基于年份的功能运行通胀调整。我的功能就像

    cci <- function(cost, year){
  switch(year,
         '2009' = cost,
         '2010' = cost/1.01298,
         '2011' = cost/1.0455,
         '2012' = cost/1.07334,
         '2013' = cost/1.10387,
         '2014' = cost/1.13042,
         '2015' = cost/1.16645)
}

如果我提供一组数据,例如cci(100, '2010'),它可以正常工作。但是我想把它运行到矢量,比如

    Cost Year
1    100 2010
2    300 2015
3    222 2012

上升错误说switch()EXPR只能是1的长度。

我尝试了sapply()但是它给我一张桌子。

    cci <- function(cost, year){
    sapply(year, switch,
           '2009' = cost,
           '2010' = cost/1.01298,
           '2011' = cost/1.0455,
           '2012' = cost/1.07334,
           '2013' = cost/1.10387,
           '2014' = cost/1.13042,
           '2015' = cost/1.16645)
  }

R> cci(c(100,200), c('2010', '2011'))
       2010   2011
[1,]  98.72  95.65
[2,] 197.44 191.30

我想要一个计算器。

谢谢,快乐万圣节!

1 个答案:

答案 0 :(得分:0)

mapply完成这项工作,感谢评论中的铺位。

mapply(cci,cost = c(100,200),year = c('2010','2011'))