У меня возникли проблемы с получением Vectorize
для работы с [
, получив приведенную ниже ошибку. Из help("[")
кажется, что [
имеет аргументы с именем x
, i
и j
- но они не работают, когда я использовал их как vectorize.args
. Я могу сделать это?Как в Vectorize `[`
## 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 (
[
, с ("я", "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