根据this question的答案,我想确定文件中的列数。
该文件如下所示:
Header,,Header2,,Header3,,
1,2,3,4,5,6
11,12,13,14,15,16
当我现在尝试使用stats命令时:
stats 'data.dat'
max_col = STATS_columns
Gnuplot给出的错误是bad data on line 1 of file data.dat
显然是标题。
如果我删除标题,一切都很好,但我打算使用columnheader
进行自动标注(如here所述)曲线,因此删除标题不是解决方案。
如果重要:我正在使用Windows机器。
答案 0 :(得分:2)
正如评论中暗示的那样,解决方案就是简单地修改命令:
stats 'data.dat' skip 1
max_col = STATS_columns
答案 1 :(得分:0)
请注意,STATS_columns
不一定会为您提供文件或数据块中的最大列数。显然,它只会为您提供第一个数据行中的列数。如果随后的行中有更多列,stats
将不考虑这一点。
如果您需要知道不是常规表的最大数据列数,则以下代码(在gnuplot 5.2.5中进行了测试)对“不规则”数据块中所有行的分隔符进行计数,并告诉您最大值。好吧,可能的缺点:包含分隔符的注释行也将包括在内。必须先将文件加载到数据块。 我很高兴知道是否有更好的方法。
### maximum number of columns in datablock
reset session
$Data <<EOD
11 12 33
21 22 23 24 25
31 32 33 34 35 36 37 38 39
41 42 43 44 45
51 52
EOD
# Method with stats
stats $Data nooutput
print "STATS_columns: ", STATS_columns
# Method with counting separators
CountChar(s,c) = int(sum[Count_i=1:strlen(s)] (s[Count_i:Count_i] eq c))
ColMax = 0
Separator = "\t"
do for [i=1:|$Data|] {
ColCount = CountChar($Data[i],Separator)+1
ColMax = (ColCount > ColMax ? ColCount : ColMax)
}
print "Maximum Columns: ", ColMax
### end of code
结果:
STATS_columns: 3
Maximum Columns: 9