Почему «внешняя» функция не работает должным образом для некоторых значений аргумента в R? - PullRequest
0 голосов
/ 23 мая 2018

Когда я запускаю команду R:

 outer(37:42, 37:42, complex, 1)

Я получаю ошибку

"Ошибка в dim (robj) <- c (dX, dY): dims [product 36] не соответствуют длине объекта [37] "</p>

в моей R-сессии.Но когда я запускаю

outer(36:42, 36:42, complex, 1) 

, у меня получается правильная матрица.Проблема сохраняется для всех значений больше 36. И нет проблем для всех значений меньше 37.

Это ошибка?

Моя система : Microsoft RОткрыть 3.4.4 / RStudio 1.1.447 / Ubuntu 16.04

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Проблема в 4-м аргументе: он должен иметь имя:

external (37:42, 37:42, complex, length.out = 1)

отлично работает!

0 голосов
/ 23 мая 2018

Более конкретно, при запуске функции с аргументами m:n, m:n она возвращает ошибку всякий раз, когда n < (n - m + 1)^2 [требуется цитата] .Попробуйте, например, outer(20:23, 20:23, complex, 1) и outer(20:24, 20:24, complex, 1), где первое не удастся, а второе - нет, потому что 24 < (24-20+1)^2.Я подозреваю, что это связано с первым аргументом complex, который равен length.out, который определяет length возвращаемого вектора - я не знаю, как это можно объяснить.Итак, ваш первый аргумент 37:42 передается параметру length.out.Это не имеет большого смысла, поэтому, пожалуйста, исправьте меня, если я ошибаюсь, но я думаю, что вы хотите сделать следующее:

outer(37:42, 37:42, function(x,y) {complex(1, real = x, imaginary = y)})

Какие выходы:

       [,1]   [,2]   [,3]   [,4]   [,5]   [,6]
[1,] 37+37i 37+38i 37+39i 37+40i 37+41i 37+42i
[2,] 38+37i 38+38i 38+39i 38+40i 38+41i 38+42i
[3,] 39+37i 39+38i 39+39i 39+40i 39+41i 39+42i
[4,] 40+37i 40+38i 40+39i 40+40i 40+41i 40+42i
[5,] 41+37i 41+38i 41+39i 41+40i 41+41i 41+42i
[6,] 42+37i 42+38i 42+39i 42+40i 42+41i 42+42i

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...