<p>完成所需步骤的R代码:</p>
<p>“其中'label'从CSV文件名派生;”</p>
<pre><code>filvec <- list.files(<path>)
for (fil in filvec) { #all the statements will be in the loop body
dat <- read.csv(fil)
dat$label <- fil # recycling will make all the elements the same character value
</code></pre>
<p>“stream”是分配给一个文件中“site”、“run”和“id”的每个组合的序列号(因此,只有在“label”中是唯一的)</p>
^{pr2}$
<p>“'i'是每个'stream'中的行号;”</p>
<pre><code>dat$i <- ave(dat$site, # could be any column since we are not using its values
dat$stream, # 'ave' passes grouped vectors, returns same length vector
FUN= function(x) 1:length(x) )
</code></pre>
<p>“‘dir’和‘payload’直接取自原始文件。”</p>
<pre><code> # you can refer to them by name or column number
</code></pre>
<p>“我还想丢弃每个流的前20行以外的所有行。”在</p>
<pre><code> out <- dat[dat$i <= 20, # logical test for the "first 20"
c('label','stream','dir','i','payload') ] # chooses columns desired
} # end of loop
</code></pre>
<p>实际上,目前这将覆盖三个'dat'文件。(因此,对于速度检查的一次性测试运行来说,这将非常有用。)您可以进行最后一次调用,例如:</p>
<pre><code> assign(paste(fil, "out", sep="_"), dat[dat$i <= 20,
c('label','stream','dir','i','payload') ] )
</code></pre>