F#将列表输出到文件

Red*_*tar 1 io f# file list

我是一名正在学习F#的学生,目前正在尝试将列表输出到通过聚类算法从分析中创建的文件。我想我已经接近了,但从第二个elem处收到了错误消息:“类型'int列表'与byte,int16,int32,int64,sbyte,uint16,uint32,uint64,nativeint, unativeint,源于使用printf样式的格式字符串”,这是我的代码:

let printNumbersToFile fileName =
   use file = System.IO.File.CreateText(fileName)
   clusteredIds
   |> List.iter (fun elem -> fprintf file "%d " elem)
   fprintfn file ""
printNumbersToFile "C:\Users\Jessica\Desktop\CTU Stuff\Dissertation\Programs For Dissertation\Fsharp\DensityClustering\Test.csv"
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。先感谢您。

Tom*_*cek 5

什么clusteredIds啊 我的猜测是这是一个列表列表(其中的嵌套列表代表您要生成的CSV列)?

如果代码clusteredIds只是一个数字列表,那么您的代码将起作用(然后您将获得将它们写到以空格分隔的文件中的代码)。如果要编写嵌套列表,则需要进行两次嵌套迭代。也许像这样:

clusteredIds
|> List.iter (fun nested -> 
    nested |> List.iter (fun elem -> fprintf file "%d " elem)
    fprintf file "\n")
Run Code Online (Sandbox Code Playgroud)

或者,使用for循环并String.concat生成用逗号分隔数字(但末尾没有其他逗号)的单行可能会更容易:

for nested in clusteredIds do
  fprintf file "%s" (String.concat "," (Seq.map string nested))
Run Code Online (Sandbox Code Playgroud)