Для успеха outer
необходимо иметь функцию, которая векторизована как минимум в x.Функция «[[» не может использоваться для доставки векторизованного результата.Этот подход был протестирован на небольшом примере, который вы указали, но он должен быть достаточно общим:
F1<-function(x,y){
print( PDay[[y]][[x]] )
}
VF1 <- Vectorize(F1)
outer(B,A,VF1)
Когда вы запустите его, вы заметите, что сначала вы видите напечатанные результаты фреймов данных, а затем матрицу списков.Если вы хотите, чтобы этот матричный результат был подавлен, вы могли бы присвоить его имени как часть вызова к внешнему (используя функцию VF1 только для побочного эффекта печати), а затем rm(the_name)
.
junk_name=outer(B,A,VF1)
rm(junk_name)
ИДругой способ подавления вывода outer
при получении побочных эффектов печати - с помощью функции invisible
:
invisible( outer(B,A,VF1) )