我有一个数字,用空格隔开(不是csv文件,而是纯文本文件),下面的代码将对连续出现的数字进行求和。
+ / 0“。1!:1
考虑:
$ cat nrow
1 2 3 4 5
$ cat ncol
1
2
3
4
5
和在J:
'b' fread 'nrow'
┌─────────┐
│1 2 3 4 5│
└─────────┘
'b' fread 'ncol'
┌─┬─┬─┬─┬─┐
│1│2│3│4│5│
└─┴─┴─┴─┴─┘
$".>'b' fread 'ncol'
5
$".>'b' fread 'nrow'
1 5
'm' fread 'ncol'
1
2
3
4
5
'm' fread 'nrow'
1 2 3 4 5
$".'m' fread 'nrow'
1 5
$".'m' fread 'ncol'
5
因此它们都可以通过fread
进行直接读取,只是形状有所不同。如果您愿意为文件中的数字的特定排列使用特定的文件摄取动词,则可以在此处停止。
但是这也可能有用:
nums =: [: , 0 ". 'm' fread ]
nums 'nrow'
1 2 3 4 5
(nums 'nrow') -: nums 'ncol'
1
使用,
(ravel)只会为您提供文件中的数字,但是它们是在文件中排列的,并将所有非数字替换为0(instead of evaluating it)
'a 1 2 b 3' fwrite 'arow'
9
nums 'arow'
0 1 2 0 3