【发布时间】:2015-08-03 04:00:29
【问题描述】:
我编写了一个函数,可以将字符输入转换为数字输出。
votedIndicated <- function(votedCode) {
switch(votedCode,
"V" = 1,
"A" = 1,
"M" = 1,
"O" = 1,
"T" = 1,
"P" = 1,
"L" = 1,
"D" = 0)
}
当我运行它时,我得到了预期的回报:
> votedIndicated("V")
[1] 1
> votedIndicated("D")
[1] 0
但是,当我尝试将此函数应用于向量时,我得到的不是另一个向量,而是一系列单值向量(我想我说的没错)
> foo <- c("V","V","D")
> bar <- lapply(foo, votedIndicated)
> bar
[[1]]
[1] 1
[[2]]
[1] 1
[[3]]
[1] 0
我怎样才能制作这样的酒吧bar <- c(1,1,0)?
【问题讨论】:
-
Vectorize(votedIndicated)(c("V","V","D")) -
你完全可以在没有函数的情况下做到这一点。只需制作一个查找向量。
vcode <- c("V"=1,"A"=1,"M"=1,"O"=1,"T"=1,"P"= 1,"L"= 1,"D"=0); vcode[foo] -
sapply(foo, votedIndicated)
标签: r