我是一名学习 F# 的学生,目前正在尝试将列表输出到通过聚类算法分析创建的文件中。我想我已经很接近了,但我从第二个 elem 收到错误消息:“类型‘int list’与任何类型 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"
任何帮助将不胜感激。预先感谢您。
最佳答案
什么是clusteredIds
?我的猜测是,它是一个列表列表(其中嵌套列表代表您想要生成的 CSV 的列)?
如果clusteredIds
只是一个数字列表,那么您的代码就可以工作(然后您将拥有将它们写入以空格分隔的文件的代码)。如果你想编写嵌套列表,那么你需要有两个嵌套迭代。也许是这样的:
clusteredIds
|> List.iter (fun nested ->
nested |> List.iter (fun elem -> fprintf file "%d " elem)
fprintf file "\n")
或者使用 for
循环和 String.concat
生成一行,其中数字以逗号分隔(但末尾没有额外的逗号)可能会更容易:
for nested in clusteredIds do
fprintf file "%s" (String.concat "," (Seq.map string nested))
关于file - F# 将列表输出到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19648678/