Функцию R.sum
кажется немного некрасивой в использовании, потому что она принимает переменное количество параметров и суммирует их все (поэтому провайдер типа R не может сделать вывод, какие аргументы он ожидает).
Чтобы вернуть результат, вам понадобятся некоторые методы расширения:
open RDotNet
Есть два варианта вызова такой функции — можно просто передать ей аргументы (не указывая их имена), что достаточно хорошо работает для R.sum
:
// You can pass parameters as an explicit array
R.sum([| 2.0; 3.0 |]).AsNumeric() |> Seq.head
// Or you can use the fact that the function takes 'params' array
R.sum(1.0, 2.0).AsNumeric() |> Seq.head
Если вы хотите указать имя параметра (на самом деле здесь не нужно, но полезно для другой функции), вы можете создать структуру, представляющую «именованные параметры» для функции R, и вызвать ее:
let nums = namedParams ["x", 2.0; "y", 3.0]
R.sum(nums).AsNumeric() |> Seq.head
Обратите внимание, что ситуация лучше для функций, параметры которых можно вывести статически. Например.:
R.mean(x=[1;2;3])
person
Tomas Petricek
schedule
01.10.2013