小编Sim*_*ard的帖子

F#中数组的元素乘法

有没有一种简单的方法来在F#中乘以数组的项目?

因此,例如,我想从样本中计算总体均值,我将按频率乘以观测值,然后除以样本数.

     let array_1 = [|1;32;9;5;6|];;

     let denominator = Array.sum(array_1);;


     denominator;;

     let array_2 = [|1;2;3;4;5|];;

     let productArray = [| for x in array_1 do
                             for y in array_2 do
                                 yield x*y |];;


     productArray;;

     let numerator = Array.sum(productArray);;

     numerator/denominator;;
Run Code Online (Sandbox Code Playgroud)

不幸的是,这产生了这样的产品阵列: -

     val it : int [] =
     [|1; 2; 3; 4; 5; 32; 64; 96; 128; 160; 9; 18; 27; 36; 45; 5; 10; 15; 20; 25;
        6; 12; 18; 24; 30|]
Run Code Online (Sandbox Code Playgroud)

哪一切都是一切的产物,而我是在点积之后(x.[i]*y.[i]为每一个i).

不幸的是,为for循环添加一个i变量和一个索引似乎不起作用.

这里使用的最佳解决方案是什么?

arrays f# elementwise-operations

8
推荐指数
2
解决办法
1226
查看次数

在F#中使用Windows窗体的面向对象的"Hello world"

我目前正在通过"真实世界的功能编程".我试图让1.12工作,一个使用Windows窗体的"hello world"程序.这是代码: -

    open System.Drawing;;
    open System.Windows.Forms;;

    type HelloWindow() =
         let frm = new Form(Width = 400, Height = 140)
         let fnt = new Font("Times New Roman", 28.0f)
         let lbl = new Label(Dock = DockStyle.Fill, Font = fnt,
                               TextAlign = ContentAlignment.MiddleCenter)
         do frm.Controls.Add(lbl)


         member x.SayHello(name) =
              let msg = "Hello" + name + "!"
              lbl.Text <- msg

         member x.Run() =
              Application.Run(frm);;

    let hello = new HelloWindow();;
    hello.SayHello("you");;
    hello.Run();;
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会引发错误 - "在单个线程上启动第二个消息循环不是有效的操作." 显然,有一个窗口打开而不是终止,这使程序混乱.我看不出如何修复错误,任何人都可以帮助我吗?

我也尝试输入最终的代码块: -

    let hello = new HelloWindow()
    hello.SayHello("you") …
Run Code Online (Sandbox Code Playgroud)

f# winforms

6
推荐指数
1
解决办法
1832
查看次数

F#中的条件总和

我已为F#中的某些客户端数据定义了记录类型,如下所示: -

  type DataPoint = {
       date: string; 
       dr: string; 
       Group: string; 
       Product: string; 
       Book: int; 
       Revenue: int} with 
          static member fromFile file =
               file
               |> File.ReadLines
               |> Seq.skip 1 //skip the header
               |> Seq.map (fun s-> s.Split ',') // split each line into array
               |> Seq.map (fun a -> {date = string a.[0]; dr = string a.[1];
                              Group = string a.[2]; Product = string a.[3];
                                Book = int a.[4]; Revenue = int a.[5] });;  

    // creates a record for …
Run Code Online (Sandbox Code Playgroud)

f# pivot record

5
推荐指数
1
解决办法
469
查看次数

从ggplot2中获取向量

我试图表明我正在分析的一些数据中有一个奇怪的"颠簸"(它与市场份额有关.我的代码在这里: -

qplot(Share, Rate, data = Dataset3, geom=c("point", "smooth"))
Run Code Online (Sandbox Code Playgroud)

(我很欣赏没有数据集这不是非常有用的代码).

无论如何,我可以得到用于从R生成平滑线的数值向量?我只需要该层来尝试将模型拟合到平滑数据.

任何帮助感激不尽.

r data-modeling ggplot2

4
推荐指数
1
解决办法
248
查看次数

访问csv文件中的条目以进行计算F#

如何访问csv文件中的条目以便在F#中对它们执行计算?

我可以用通常的方式将csv文件读入内存,但是一旦我被卡住了.

理想情况下,我只需从列创建数组,然后使用array.map2执行计算.

所以我的数组1是一些网站使用指标,第2列是达到第1列中的值的用户数(比如对网站进行6次访问)我们可以通过乘以数组中的每个条目来计算平均访问次数第1列,由第2列组成的数组,除以第2列的array.sum.

我在F#片段http://fssnip.net/3T上尝试了csv to Array代码,但它为我生成了一系列字符串元组.

有谁能建议更好的方法?

编辑:一些示例输入将类似于: -

     Visits Count
     1  8
     2  9
     3  5
     4  3
     5  2
     6  1
     7  1
    10  1
Run Code Online (Sandbox Code Playgroud)

输出将返回数据的平均值,在这种情况下为2.87(小数点后2位).

编辑2:从我发现的CSV到阵列代码的当前输出是这个

     val it : seq<BookWindow> =
            seq [{Visits = 1;
                  Count = 8;}; {Visits = 2;
                           Count = 9;}; {Visits = 3;
                                  Count = 5;}; {Visits = 4;
                                              Count = 3;}; ...]
Run Code Online (Sandbox Code Playgroud)

这对计算没那么有用......

csv arrays math f#

4
推荐指数
2
解决办法
2647
查看次数

F#中的String.split问题

我在使用以下代码时遇到问题,我正在尝试构建一个词法分析器.

我再次使用F#中的科学家的例子.

    let lines_of_file filename =
       seq { use stream = File.OpenRead filename
             use reader = new StreamReader(stream)
             while not reader.EndOfStream do
             yield reader.ReadLine() };;

    let read_matrix filename =
      lines_of_file filename
      |> Seq.map (String.split [' '])
      |> Seq.map (Seq.map float)
      |> Math.Matrix.of_seq;;
Run Code Online (Sandbox Code Playgroud)

我声明了以下命名空间: -

          open System
          open System.IO
          open System.Runtime.Serialization.Formatters.Binary
          open Microsoft.FSharp.Core
Run Code Online (Sandbox Code Playgroud)

但是在read_matrix函数中,"Split.string"中的"split"无法识别.intellisense也不识别"矩阵".

我已经尝试声明了很多名称空间以查看它们是否识别该方法,但没有任何作用(我的intellisense甚至不识别System.Math).

我很抱歉,如果这是一个愚蠢的问题,我已经看过MSDN和其他地方,但我找不到任何东西.

任何人都可以帮助我让VS识别"分裂"和"矩阵"吗?

非常感谢.

string f# lexer

2
推荐指数
2
解决办法
5226
查看次数

将一系列元组写入csv文件f#

我试图将一系列元组写入csv,但正常的File.WriteAllLines被一系列元组重载.

因此,我试图将我的元组变成一系列字符串.

这是我的代码: -

open System;;
open Microsoft.FSharp.Reflection;;

let tupleToString (t: string * float) = 
        if FSharpType.IsTuple(t.GetType()) 
        then String.Format("{0},{1}", fst t, snd t)
        else "";;

    let testTuple = ("monkey", 15.168);;

    tupleToString(testTuple);;

let testSeqTuple = [("monkey", 15.168); ("donkey", 12.980)];;

let allIsStrings (t:seq<string * float>) = Seq.collect tupleToString t;;

allIsStrings(testSeqTuple);;
Run Code Online (Sandbox Code Playgroud)

当我在一个元组上使用"tupleToString"时,结果就好了.

然而,allIsStrings的Seq.collect部分返回按字符分解的元组.

我也试过Seq.choose和Seq.fold,但这些只是抛出错误.

任何人都可以建议我应该使用序列模块中的哪些函数 - 或者建议使用可以在元组上工作的File.WriteAllLines的替代方法?

f# tuples export-to-csv

2
推荐指数
2
解决办法
2038
查看次数

扫描csv文件中的R中的字符串

我希望能够在R中逐行扫描csv文件,并排除包含单词"target"的行.

问题是数据来自不同的地方,而"目标"这个词可能出现在数据框的许多不同的列中.

所以我需要一个函数中的一行来查找这个字符串,如果它不存在,那么将该行附加到一个新的数据框(然后我将写为新的csv).

任何和所有帮助感激地收到了.

csv r function

0
推荐指数
1
解决办法
2016
查看次数

在F#中构建列表时类型不匹配

我试图从一些文件的名称建立一个列表.不幸的是我收到了一个类型错误,我不知道如何纠正.

我的代码: -

open System

let buildStringList (list: string []) =

      let initial = []
           for i = 0 to list.Length do
              let foo = list.[i]
                 List.append initial foo.Substring(foo.IndexOf("."))
Run Code Online (Sandbox Code Playgroud)

类型错误: -

  error FS0001: This expression was expected to have type string -> 'a
  but here has type string
Run Code Online (Sandbox Code Playgroud)

这与"foo.Substring(foo.IndexOf("."))"对象有关.在这里更正类型的最佳方法是什么?

非常感谢.

f# types list

0
推荐指数
1
解决办法
182
查看次数