ここに私が書いた関数があります:
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
。これを高速にしたい場合は、使用する必要があります。幸いなことに、私のデータは非常に小さいため、この場合のパフォーマンスは重要ではありません。
ありがとう!