小编Ste*_*ven的帖子

使用FSharp获取有关MongoDB集合的一般信息

我可以检索有关的所有集合的基本信息MongoDBF#

我有一个MongoDB> 450集合.我可以访问数据库

open MongoDB.Bson
open MongoDB.Driver
open MongoDB.Driver.Core 
open MongoDB.FSharp
open System.Collections.Generic

let connectionString = "mystring"
let client = new MongoClient(connectionString)
let db = client.GetDatabase(name = "Production")
Run Code Online (Sandbox Code Playgroud)

我曾考虑尝试让所有集合循环遍历每个集合名称,并获得有关每个集合的基本信息

let collections = db.ListCollections()
Run Code Online (Sandbox Code Playgroud)

db.GetCollection([name of a collection])
Run Code Online (Sandbox Code Playgroud)

但是db.GetCollection([name])要求我定义一个类型来提取每个集合的信息.这对我来说很有挑战性,因为我不想为每个集合定义一个类型,其中有> 450,坦率地说,我对这个数据库并不是很了解.(实际上,我的组织中没有人这样做;这就是为什么我要整理一个非常基本的数据字典.)

是否真的需要为每个集合定义类型?我是否可以使用此处提供MongoCollection方法而无需为每个集合定义类型?


编辑:最后,我希望能够输出集合名称,每个集合中的n个文档,每个集合中的字段名称列表以及每个字段类型的列表.

c# f# mongodb

12
推荐指数
1
解决办法
266
查看次数

摆脱F#中的"厄运金字塔"

我有几个口头表达式,我已经打包成一个函数:

open FsVerbalExpressions
open FsVerbalExpressions.VerbalExpression
open System.Text.RegularExpressions
open System

let createOrVerbExFromList (verbExList: VerbEx list) = 
    let orVerbEx = 
        verbExList
        |> List.reduce (fun acc thing -> verbExOrVerbEx RegexOptions.IgnoreCase acc thing) //simpleVerbEx

    orVerbEx 

let k12VerbEx =     
    let kTo12 =  ["SCHOOL"; "DIST"; "SD"; "HS"; "BD OF ED"]
    kTo12
    |> List.map (fun word -> VerbEx(word))
    |> createOrVerbExFromList

let twoYearCollegeVerbEx = 
    VerbEx("2 Year College")

let universityVerbEx = 
    VerbEx("UNIV")

let privateSchoolVerbEx = 
    VerbEx("ACAD")

//Here there be dragons:
let newInst (x: string) =
    match (isMatch x k12VerbEx) …
Run Code Online (Sandbox Code Playgroud)

f#

9
推荐指数
1
解决办法
331
查看次数

使用KMeans聚类算法查找部分成员资格

我可以KMeans很容易地计算集群成员资格:

open System
open System.IO
open Utils
open Accord
open Accord.Math 
open Accord.MachineLearning

let vals = [|
    [|1.0; 2.0; 3.0; 2.0|]
    [|1.1; 1.9; 3.1; 4.0|]
    [|2.0; 3.0; 4.0; 4.0|]    
    [|3.0; 3.1; 2.0; 3.0|]
    [|2.0; 4.0; 3.0; 6.0|]
    [|1.0; 5.0; 5.0; 7.0|]
    [|4.0; 3.0; 6.0; 8.0|]
    [|5.0; 4.0; 3.0; 6.0|]
    [|6.0; 4.0; 8.0; 7.0|]
    [|5.0; 6.0; 5.0; 9.0|]
    [|4.0; 2.0; 7.0; 8.0|]
    [|8.0; 9.0; 3.1; 2.2|]
    [|8.0; 9.0; 2.0; 2.0|]
    [|10.0; 2.0; 3.0; 2.0|]
    [|10.1; 1.9; 3.1; 4.0|]
    [|20.0; …
Run Code Online (Sandbox Code Playgroud)

c# f# hierarchical-clustering accord.net

9
推荐指数
1
解决办法
389
查看次数

从QuickGraph图表中获取连接的组件

我是图论的新手.

我已经使用QuickGraph库创建了一个邻接图,最终,我希望从图中获得连接的组件.

open QuickGraph

let tup = [(1M,1M); (2M, 18M); (3M, 3M); (4M, 5M); (5M, 24M); (24M, 6M); (7M, 6M); (8M, 9M); (10M, 9M)]

type Vertex = {decimal: decimal}

let edges = 
    tup
    |> List.map (fun x -> ({decimal = fst x}, {decimal = snd x}))
    |> List.map (fun x -> Edge<Vertex> x)

//Undirected Graph
let undirGraph = edges.ToUndirectedGraph()

undirGraph.Edges
undirGraph.Vertices

let x = QuickGraph.Algorithms.ConnectedComponents.ConnectedComponentsAlgorithm(undirGraph)
Run Code Online (Sandbox Code Playgroud)

输出来自undirGraph.Edges:

val it : Collections.Generic.IEnumerable<Edge<Vertex>> =
seq
[FSI_0227+Vertex->FSI_0227+Vertex {Source = {decimal …
Run Code Online (Sandbox Code Playgroud)

.net c# f# quickgraph

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

CRAN发现R CMD检查--as-cran没有警告

我在Windows 7上使用32位R 3.1.2.

我最近R CMD check --as-cran在一个最近开发的软件包上进行了一次,只收到了"新提交"的说明.这里和R-devel的研究表明这可以忽略不计.devtools::build_win()除了前面提到的那个之外,我还使用过并没有收到任何注释或警告.此外,我在本地构建了包R CMD build,R CMD INSTALL --build并且一切正常,包括PDF手册.

提交给CRAN后,我被告知会发出警告:

    This fails to make its manual:

    * checking PDF version of manual ... WARNING
    LaTeX errors when creating PDF version.
    This typically indicates Rd problems.
    LaTeX errors found:
    ! Missing $ inserted.
    <inserted text>
                    $
    l.682 }{}

    ! Missing } inserted.
    <inserted text>
                    }
    l.682 }{}

    ...

    The line appears to be

    \widehat{R_1} = \frac{\sum\limits_{i=1}^n{c_i/n}}{\sum\limits_{i=1}^n{L_i/n}}
Run Code Online (Sandbox Code Playgroud)

此处的其他研究表明,我使用win-builder.r-project.org/检查开发版本上的包,并且该测试的结果只引发了"新提交"警告.

我很茫然.我无法复制CRAN发现一切似乎在我的机器上和 …

windows r package cran

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

我可以在不提供样本的情况下使用CsvProvider编写标题吗?

为什么如果我使用CsvProvider<>F#创建一个新的CSV类型,如下所示:

type ThisCsv = CsvProvider<Schema = "A (decimal), B (string), C (decimal)", HasHeaders = false>
Run Code Online (Sandbox Code Playgroud)

然后创建/填充/保存.csv,生成的文件不包含我指定的架构中的标头?似乎应该有一种方法在最终的.csv文件中包含标题,但事实并非如此.

设置HasHeaders = true错误,因为没有提供样本.工作的唯一方法HasHeaders = true是获得样本.csv.在我看来,应该有一种方法来指定没有样本的模式,并在最终文件中包含标头.

我在使用时遗漏[nameOfMyCSV].Save()了哪些内容可以包含模式中的标题,或者这可以不做?

f# f#-data

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

Terraform AWS Athena将Glue目录用作数据库

我对应该如何使用terraform将Athena连接到我的Glue Catalog数据库感到困惑。

我用

resource "aws_glue_catalog_database" "catalog_database" {
    name = "${var.glue_db_name}"
}

resource "aws_glue_crawler" "datalake_crawler" {
    database_name = "${var.glue_db_name}"
    name          = "${var.crawler_name}"
    role          = "${aws_iam_role.crawler_iam_role.name}"
    description   = "${var.crawler_description}"
    table_prefix  = "${var.table_prefix}"
    schedule      = "${var.schedule}" 

    s3_target {
      path = "s3://${var.data_bucket_name[0]}"
  }
    s3_target {
      path = "s3://${var.data_bucket_name[1]}"
  }
 }
Run Code Online (Sandbox Code Playgroud)

创建一个Glue数据库,然后使用搜寻器来爬行s3存储桶(这里只有两个),但是我不知道如何将Athena查询服务链接到Glue DB。在的terraform文档中Athena,似乎没有一种方法可以将Athena连接到Glue目录,而只能连接到S3存储桶。但是,显然,雅典娜可以与Glue集成在一起

如何构建Athena数据库以使用我的Glue目录作为数据源而不是S3存储桶?

amazon-web-services terraform aws-glue terraform-provider-aws aws-glue-data-catalog

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

使用包openxlsx将多个样式()应用于同一行

我最近开始使用该R包,openxlsx因为它根本不需要rJava包或Java.我正在尝试将日期写入列,但行格式未应用于我的xlsx文件中的最终日期列.

示例数据:

tmp <- structure(list(someNumbers = c(8L, 3L, 4L, 4L, 1L, 4L, 2L, 2L, 
       7L, 2L), someLetters = structure(c(9L, 4L, 1L, 2L, 7L, 3L, 4L, 
       6L, 8L, 5L), .Label = c("b", "d", "e", "h", "l", "n", "o", "t", 
       "u"), class = "factor"), moreNumbers = c(25L, 25L, 36L, 38L, 
       39L, 32L, 31L, 40L, 28L, 32L), moreStuff = c(0.37, 1.39, -2.27, 
       0.65, -0.71, -1.67, 0.71, 1.32, 2.14, 1.13), words = structure(c(5L, 
       3L, 7L, 1L, …
Run Code Online (Sandbox Code Playgroud)

r openxlsx

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

在给定目的地的(DAG)有向无环图中寻找路径

假设我有这个数组:

let reportStructure = [|(2, 1); (3, 2); (4, 2); (5, 3); (6, 4); (7, 3)|]
Run Code Online (Sandbox Code Playgroud)

int元组中的第一个向第二个报告的位置int.

我可以很容易地映射它

let orgMap = Map.ofArray reporting
Run Code Online (Sandbox Code Playgroud)

从那里,我可以很容易地得到所有向2报告的整数列表

orgMap 
|> Map.filter (fun _ key -> key = 2)
Run Code Online (Sandbox Code Playgroud)

返回

map [(3, 2); (4, 2)]
Run Code Online (Sandbox Code Playgroud)

然而,我真正希望看到的是整个结构,从2一直向下.例如,我想找到一种方法可以给我样本输出

map [(3, 2); (4, 2); (5, 3); (6, 4); (7, 3)]
Run Code Online (Sandbox Code Playgroud)

如果我正在找人2或

map [(5, 3); (7, 3)]
Run Code Online (Sandbox Code Playgroud)

如果我对人3感兴趣

我可以这样做吗?如果是这样,怎么样?是否有其他结构map可以更好地实现这一目标?

在此先感谢您的帮助.

f# depth-first-search directed-acyclic-graphs

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

将单元测试添加到VSCode中的F#项目

我正在使用VSCode和Ionide套件来在F#中创建一个控制台应用程序.我需要向应用程序添加单元测试,以便ctrl+shift+p FAKE: Build在项目完成时,测试在构建过程中运行.

在Github中创建了一个虚拟项目作为示例.

最初,test目录不存在.我创建了testdir并在该文件夹中创建了第二个项目TestProj.Test(事后看来,我应该使用更多的描述性名称)用于测试目的.我将.fsproj文件添加TestProj到此项目中,以便我可以参考SimpleFunctions.fs. NUnit.FrameworkFsUnit添加到TestProj.Test. Test.fs包含两个简单的测试.

我故意创建了TestProj.Test一个F#,library因为我在SO上读到测试项目需要是一个库而不是一个控制台应用程序.

我将第build.fsx9,31-37和47行添加到来自Ionide的默认文件中..但是,当我构建整个项目(即TestProj)时,构建失败,我收到以下错误:

  1) System.Exception: NUnit: cannot run tests (the assembly list is empty).
   at Fake.NUnitSequential.NUnit(FSharpFunc`2 setParams, IEnumerable`1 assemblies) in C:\code\fake\src\app\FakeLib\UnitTest\NUnit\Sequential.fs:line 22
   at FSI_0005.Build.clo@31-3.Invoke(Unit _arg3)
   at Fake.TargetHelper.runSingleTarget(TargetTemplate`1 target) in C:\code\fake\src\app\FakeLib\TargetHelper.fs:line 492
Run Code Online (Sandbox Code Playgroud)

Sequential.fs建议的第22行assemblies是空的.

我究竟做错了什么?我应该如何设置 …

f# unit-testing f#-fake visual-studio-code ionide

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