在 MacOS 上的终端窗口上运行 RProvider1.1.20
我尝试从中运行示例 http://bluemountaincapital.github.io/FSharpRProvider/mac-and-linux.html
R.mean([1;2;3;4)]
R.x11()
R.sin(1)
> R.sin(1.0);;
val it : RDotNet.SymbolicExpression = [1] 0.841471
一切正常
然而>R.sin(1.0);;
base::sin(0, 1) 中的错误:传递给 'sin' 的 2 个参数需要 1
RDotNet.EvaluationException: base::sin(0, 1) 中的错误:传递给 'sin' 的 2 个参数需要 1
at RDotNet.REngine.Parse (System.String statement, System.Text.StringBuilder incompleteStatement) [0x000a0] in :0 at RDotNet.REngine+d__0.MoveNext () [0x0008f] in :0 at System.Linq.Enumerable.LastOrDefault[TSource] (System.Collections.Generic.IEnumerable
1[T] source) [0x00042] in <2392cff65f724abaaed9de072f62bc4a>:0 at RDotNet.REngine.Evaluate (System.String statement) [0x0000d] in <bc069eb3146d4bcda8475794f512037f>:0 at RProvider.RInteropInternal+eval@292.Invoke (Microsoft.FSharp.Core.Unit unitVar0) [0x00026] in <57161c90b86b2a10a7450383901c1657>:0 at RProvider.Internal.Logging.logWithOutput[a] (RProvider.CharacterDeviceInterceptor characterDevice, Microsoft.FSharp.Core.FSharpFunc
2[T,TResult] f) [0x0007e] in <57161c90b86b2a10a7450383901c1657>:0 at RProvider.RInteropInternal.eval (System.String expr) [0x0000c] in <57161c90b86b2a10a7450383901c1657>:0 在 .$FSI_0028.main@ () [0x00046] 在 <23b88108285f4035b1dcf54f78a47062>:0 at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00038] in :0 由于错误而停止
我首先想知道它是否与区域设置(数字的逗号或点分隔符)有关,但 0.1 和 1.0 的示例表明并非如此
这是一个 x 帖子,因为我也在 RProvider GitHub 中发布了这个问题 这里 https://github.com/BlueMountainCapital/FSharpRProvider/issues/186
感谢@s952163
这是一个区域设置问题。因此,如果您的全局环境是英文的,则不应有此错误。
尽管这不是一个非常令人满意的答案,但我会暂时将其标记为答案。