我在使用[
进行向量化时遇到了困难,出现了下面的错误。从help("[")
中可以看出,[
有名为x
、i
和j
的参数,但是当我将它们用作vectorize.args
时似乎无法工作。我能这么做吗?
## Some data
dat <- data.frame(a=1:10, b=11:20, c=21:30)
## Vectorize with mapply, seems to work
f <- function(i, j, dat) list(dat[i, j])
mapply(f, list(1:2, 3:4), list(1:2, 2:3), MoreArgs = list(dat=dat))
# [[1]]
# a b
# 1 1 11
# 2 2 12
#
# [[2]]
# b c
# 3 13 23
# 4 14 24
## Now using Vectorize, apply to data
Vectorize(`[`, c("i", "j"))(x=dat, i=list(1:2, 2:3), j=list(1:2, 2:3))
在 Vectorize(
[
, c("i", "j")) 中出现错误: 必须为'vectorize'指定形式参数的名称
但这个可以工作(会有一个关于参数命名的警告)
`[`(x=dat, i=1:2, j=1:2)
此外,如果我这样做,那就没问题了。
Vectorize(`[.data.frame`, c("i", "j"))(dat, list(1:2, 2:3), list(1:2, 2:3))
[
是一种原语,它没有命名的形式参数,即formals("[") NULL
。 - James