# 7.4 Foreach datum loops

Foreach datum loops are similar to foreach loops in that they run a script block once for each item in a list. In this case, however, the list in question is the list of data points in a data file, samples of a function, or values in a vector. The syntax of the `foreach datum` command is similar to that of the commands met in the previous chapter for acting on data files: the standard modifiers `every`, `index`, `select` and `using` can be used to select which columns of the data file, and which subset of the datapoints, should be used:

    foreach datum i,j,name in "data.dat" using 1:2:"%s"%($3)
      <code>

    foreach datum x,y,z in sin(x):cos(x)
      <code>

    foreach datum a,b in vector_a:vector_b
      <code>

The `foreach datum` command is followed by a comma-separated list of the variable(s) which are to be read from the input data on each iteration of the loop. The `using` modifier specifies the columns or rows of data which are to be used to set the values of each variable. In the first example above, the third variable, `name`, is set as a string, indicating that it will be set to equal whatever string of text is found in the third column of the data file.

The following Pyxplot script calculates the mean and standard deviation of a set of data points using the `foreach datum` command:
`N_data = 0` `sum_x = 0` `sum_x2 = 0`
`foreach datum x in ’–’` `{` `N_data ++` `sum_x += x` `sum_x2 += x**2` `}` `1.3` `1.2` `1.5` `1.1` `1.3` `END`
`mean = sum_x / N_data` `SD = sqrt(sum_x2 / N_data - mean**2)`
`print "Mean = %s"%mean` `print "SD = %s"%SD`
For the data supplied, a mean of and a standard deviation of are returned.