我是一名正在学习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)
任何帮助将不胜感激。先感谢您。
什么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)
| 归档时间: |
|
| 查看次数: |
1244 次 |
| 最近记录: |