functions in rdcols.i -
rdcols
|
cols = rdcols(f) or cols = rdcols(f, ncols) eq_nocopy, col1, *cols(1) eq_nocopy, col2, *cols(2) ... eq_nocopy, colN, *cols(ncols) cracks ascii file F into NCOLS columns, returning an array of pointers to the columns. A "column" is defined by either its width in characters, or by the appearance of a delimiting character (such as a blank, a comma, or a tab). Multiple delimiting characters may either be skipped (as usual if the character is a blank), or may represent a number of empty columns (as for reading a typical text file exported from a spreadsheet or database program). rdcols returns an array of pointers COLS, with *COLS(i) the contents of the i-th column. The NCOLS parameter may be omitted in which case rdcols will guess the number of columns. F may be either a file handle or a filename. nskip=m skip the first M lines of the file (M=0 by default) nlines=n read only the first M+N lines of the file comment=text interpret lines beginning with TEXT (possibly preceded by blanks) as comments (blank lines are always comments) width=w column width, or list of widths (w=0 means any width) delim=d column delimiters (as for strtok), or list of delimiters type=t column type, or list of types t=0 means guess, t=1 means string, t=2 means integer, t=3 means real, t=4 means either integer or real marker=k marker column delimiters (as for strtok) missing=m missing value, or list of values for empty numeric columns The width=, delim=, type=, and missing= keywords may either be scalar values to apply to every column, or lists to apply to successive columns. The marker= keyword is similar to the delim= keyword, except that multiple consecutive occurrences indicate empty columns. If any list is shorter than NCOLS, its final value applies to all remaining columns. If any list is longer than NCOLS, its trailing values are silently ignored. By default, width=0. Non-zero width is very tricky, since a column begins wherever the previous column ended; if the previous column had width=0, its delimiter is treated as a part of it, so it is not included in the width count. Consequently, the width= keyword is best suited to situations in which only the final width value is 0. By default, marker=[]. If present, then every column is delimited by a character in marker, and every occurrence of such a character indicates a new column. Use marker="\t" to read tab-delimited text files exported from a spreadsheet or database program. Non-zero width= values supersede marker=, but delim= is ignored if marker is present. By default, delim=" \t", and type=0, so that blanks and tabs delimit columns, and rdcols guesses whether a column contains string or numeric data. A numeric column ends at the first character that cannot be interpreted as part of the number, whether or not that is a character in delim. If you use type= to force a numeric column, empty rows or rows which are not numbers get the value 0.0 by default, or the value specified by the missing= keyword. Missing values in string columns always get the value "". If you need finer control of the returned types than provided by the type= keyword, see rdconvert. | |
SEE ALSO: | read, rdline, rdconvert |
rdconvert
|
rdconvert, cols, type1, type2, type3, ... or cols = rdconvert(cols, type1, type2, type3, ...) converts the data types of the COLS, so that COLS(1) becomes TYPE1, COLS(2) TYPE2, COLS(3) TYPE3, and so on. The COLS array is an array of pointers as returned by rdcols. If any of the TYPEi is nil, that column is not altered. This function is only useful if you are not satisfied with either the long or double types returned by rdcols, e.g.- cols = rdcols("datafile", 5); rdconvert, cols, , short, float, , int; | |
SEE ALSO: | rdcols |