这是我写的一个函数:
lookup <- function (keys, values, key, default) {
found <- which(keys == key)
if (length(found) == 1) return(values[found])
if (length(found) == 0) return(default)
stop("lookup(",keys,",",values,",",key,",",default,"): duplicate keys")
}
它可以满足我的需要:
> lookup(c("a"),c(3),"a",0)
[1] 3
> lookup(c("a"),c(3),"b",0)
[1] 0
> lookup(c("a","a"),c(3),"a",0)
Error in lookup(c("a", "a"), c(3), "a", 0) : lookup(aa,3,a,0): duplicate keys
问题是:它看起来风格正确吗?我错过了什么吗?
(具体来说,我希望这个函数可以写成一个表达式)。
data.table
我确实知道这涉及到完整的向量查找,因此效率低下,如果我希望它更快,我应该使用它。幸运的是,这种情况下的性能并不重要,因为我的数据非常非常小。
谢谢!