我开始使用RProvider。对于初学者,我刚尝试以不同的方式评估函数。看来我已经遇到了问题(也许是我理解RProvider如何工作的问题)。我以四种不同的方式运行相同的功能,我认为这是相同的。然而,这四个例子给我提供了两个不同的结果。
R.sapply(R.c(1,2,3,4,5), R.eval(R.parse(text="mean"))).GetValue<float[]>()
// val it : float [] = [|1.0; 2.0; 3.0; 4.0; 5.0|]
R.sapply(R.c(1,2,3,4,5),"mean").GetValue<float[]>()
// val it : float [] = [|1.0; 2.0; 3.0; 4.0; 5.0|]
R.mean(R.c(1,2,3,4,5)).GetValue<float[]>()
// val it : float [] = [|3.0|]
R.eval(R.parse(text="mean(c(1,2,3,4,5))")).GetValue<float[]>()
// val it : float [] = [|3.0|]
谁能告诉我为什么会这样?我自己的猜测是R.sapply
以元素方式应用给定的函数。但是我该如何解决这个问题?
答案 0 :(得分:1)
do.call()
是R中用于将函数“应用”到参数列表中的函数(与在函数或值列表上应用或映射函数略有不同,这是{{1家庭确实)。
你想要的R函数是
*apply
根据评论(我不会说F#),F#模拟将是:
do.call("mean",list(c(1,2,3,4,5)))