2

我是一名学习 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"

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

4

1 回答 1

5

是什么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))
于 2013-10-29T02:48:24.997 回答