Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F#,R提供者,R package tm和(几乎)Ovid示例_R_F#_Type Providers - Fatal编程技术网

F#,R提供者,R package tm和(几乎)Ovid示例

F#,R提供者,R package tm和(几乎)Ovid示例,r,f#,type-providers,R,F#,Type Providers,请注意,我是F#和R的初学者(更是如此),所以可能会指出我是RTFM或其他;-) 我已经开始用R和包tm研究一些文本数据挖掘 我在R中有以下脚本,顺便说一句,它非常类似于Ovid分析的示例(将真实示例中的“lgtext”替换为“txt”,将language=“no”替换为language=“lat”以在Ovid示例中运行它): “扩展”R脚本如此之多的原因是为了让我理解并使其工作 在来回运行一段时间后,上述内容将运行,并在REPL中正常工作和报告,与R中相同,最后一行除外: let lg =

请注意,我是F#和R的初学者(更是如此),所以可能会指出我是RTFM或其他;-)

我已经开始用R和包tm研究一些文本数据挖掘

我在R中有以下脚本,顺便说一句,它非常类似于Ovid分析的示例(将真实示例中的“lgtext”替换为“txt”,将language=“no”替换为language=“lat”以在Ovid示例中运行它):

“扩展”R脚本如此之多的原因是为了让我理解并使其工作

在来回运行一段时间后,上述内容将运行,并在REPL中正常工作和报告,与R中相同,最后一行除外:

let lg =  R.tm__map(lgorg, R.stripWhitespace)
这会产生如下错误:

System.Exception: No converter registered for type FSI_0006+lg@81 or any of its base types
   at RProvider.RInteropInternal.convertToR@164.Invoke(String message) in c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs:line 164
   at Microsoft.FSharp.Core.PrintfImpl.go@523-3[b,c,d](String fmt, Int32 len, FSharpFunc`2 outputChar, FSharpFunc`2 outa, b os, FSharpFunc`2 finalize, FSharpList`1 args, Int32 i)
   at Microsoft.FSharp.Core.PrintfImpl.run@521[b,c,d](FSharpFunc`2 initialize, String fmt, Int32 len, FSharpList`1 args)
   at Microsoft.FSharp.Core.PrintfImpl.capture@540[b,c,d](FSharpFunc`2 initialize, String fmt, Int32 len, FSharpList`1 args, Type ty, Int32 i)
   at <StartupCode$FSharp-Core>.$Reflect.Invoke@720-4.Invoke(T1 inp)
   at RProvider.RInteropInternal.REngine.SetValue(REngine this, Object value, FSharpOption`1 symbolName) in c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs:line 274
   at RProvider.RInteropInternal.toR(Object value) in c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs:line 287
   at RProvider.RInterop.passArg@431(List`1 tempSymbols, Object arg) in c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs:line 445
   at RProvider.RInterop.argList@452-1.GenerateNext(IEnumerable`1& next) in c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs:line 453
   at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.MoveNextImpl()
   at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.System-Collections-IEnumerator-MoveNext()
   at Microsoft.FSharp.Collections.SeqModule.ToArray[T](IEnumerable`1 source)
   at RProvider.RInterop.callFunc(String packageName, String funcName, IEnumerable`1 argsByName, Object[] varArgs) in c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs:line 450
   at RProvider.RInterop.call(String packageName, String funcName, String serializedRVal, Object[] namedArgs, Object[] varArgs) in c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs:line 494
   at <StartupCode$FSI_0006>.$FSI_0006.main@() in C:\Users\helgeu\Documents\Visual Studio 2012\Projects\DisqusAnalyzer\DisqusAnalyzer.Lib\InteractiveSession.fsx:line 81
Stopped due to error
System.Exception:没有为FSI_0006类型注册转换器+lg@81或者它的任何基类型
在RProvider.RInteropInternal。convertToR@164.Invoke(字符串消息)在c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs中:第164行
位于Microsoft.FSharp.Core.PrintfImpl。go@523-3[b,c,d](字符串fmt,Int32 len,FSharpFunc`2 outputChar,FSharpFunc`2 outa,b os,FSharpFunc`2 finalize,FSharpList`1 args,Int32 i)
位于Microsoft.FSharp.Core.PrintfImpl。run@521[b,c,d](FSharpFunc`2初始化,字符串fmt,Int32 len,FSharpList`1参数)
位于Microsoft.FSharp.Core.PrintfImpl。capture@540[b,c,d](FSharpFunc`2初始化,字符串fmt,Int32 len,FSharpList`1参数,类型ty,Int32 i)
美元。Invoke@720-4.调用(T1 inp)
在c:\Tomas\Public\FSharp.RProvider\src\RProvider\rinterp.fs中的RProvider.rinternal.REngine.SetValue(REngine this,Object value,FSharpOption`1 symbolName)处:第274行
在c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs中的RProvider.rinterpinal.toR(对象值)处:第287行
在RProvider.RInterop。passArg@431(列出'1个临时符号,对象参数)在c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs中:第445行
在RProvider.RInterop。argList@452-1.c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs中的GenerateNext(IEnumerable`1&next):第453行
在Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.MoveNextImpl()中
在Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.System-Collections-IEnumerator-MoveNext()中
在Microsoft.FSharp.Collections.SeqModule.ToArray[T](IEnumerable`1来源)
在c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs中的RProvider.RInterop.callFunc(字符串packageName,字符串funcName,IEnumerable`1 argsByName,对象[]varArgs)处:第450行
在c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs中的RProvider.RInterop.call(字符串packageName、字符串funcName、字符串serializedRVal、对象[]namedArgs、对象[]varArgs)处:第494行
C:\Users\helgeu\Documents\Visual Studio 2012\Projects\disqsanalyzer\disqsanalyzer.Lib\InteractiveSession.fsx中的.FSI_0006.main@():第81行
由于错误而停止
我必须承认我对此一无所知,谷歌也帮不了我;-)


有人吗?有什么建议吗?它应该起作用吗?我做错了吗?

我怀疑问题在于
tm\uu map
的第二个参数是R函数。当您编写
R.stripWhitespace
时,您会得到一个F#闭包,我们无法将其转换回R函数

解决方法可能是计算一个表达式,该表达式将R函数返回为
SymbolicExpression
,然后将其作为参数传递:

let stripWhite = R.eval(R.parse(text="stripWhitespace"))
let lg =  R.tm__map(lgorg, stripWhite)

TomasPetricek提供的解决方案不起作用,因为stripWhitespace函数来自tm包。要实现此功能,应使用函数的完全限定名:

let stripWhitespace= R.eval(R.parse(text="tm::stripWhitespace"))
let lg = R.tm__map(lgorg, stripWhitespace)

这就行了。

现在我明白了,这对我来说有点道理。我还没有仔细看过,但我确实尝试了一个像你描述的那样快速的方法,而且也没有像预期的那样有效。正如stackoverflow.com/questions/28498549/…中所描述的那样,取得了一些成功,因此我将仔细观察并尝试更多的选项,然后可能会发布一些后续信息。简言之,我强烈怀疑我试图用F#来写R,而不是用F#来写R。无论如何:谢谢!
let stripWhite = R.eval(R.parse(text="stripWhitespace"))
let lg =  R.tm__map(lgorg, stripWhite)
let stripWhitespace= R.eval(R.parse(text="tm::stripWhitespace"))
let lg = R.tm__map(lgorg, stripWhitespace)