For循环返回最后一个结果

DnstnRmsy

我有少量的csv文件,每个文件包含两列带有数值的列。我想编写一个for循环,该循环读取文件,对列求和,并将每个csv的总和存储在数值向量中。这是我最近来的:

allfiles <- list.files()
for (i in seq(allfiles)) {
     total <- numeric()
     total[i] <- sum(subset(read.csv(allfiles[i]), select=Gift.1), subset(read.csv(allfiles[i]), select=Gift.2))
     total
}

我的结果是所有NA都保存了最后一个文件的值。我知道每次for循环执行时我都会覆盖每次迭代,并且我认为*我需要对索引做一些事情。

r2evans

第一个问题是您没有预分配的正确长度(或正确地追加到)total无论如何,我建议不要使用该方法。

有几种方法可以做到这一点,但是R-onic(我的术语是基于pythonic ...我知道,它的运行不畅)是基于向量/列表的。

alldata <- sapply(allfiles, read.csv, simplify = FALSE)
totals <- sapply(alldata, function(a) sum(subset(a, select=Gift.1), subset(a, select=Gift.2)))

我经常喜欢这样做,将“原始/未更改”数据保留在一个列表中,然后从中重复提取。例如,如果文件很大并且读取它们的时间很短,那么如果您意识到自己也需要Gift.3并按自己的方式进行操作,则需要重新读取整个数据集。但是,使用我的方法,您只需更新第二个sapply以包括更改,然后对已经加载的数据重新运行。(我的基本原理是基于不受信任的数据,通常未使用的部分或您可能没有的其他因素。)

如果您真的想将代码减少到一行,请执行以下操作:

totals <- sapply(allfiles, function(fn) {
  x <- read.csv(fn)
  sum(subset(x, select=Gift.1), subset(x, select=Gift.2))
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Foreach 循环只返回最后一个结果

Foreach循环仅返回最后一个结果

我怎么知道最后一个异步函数何时在“ for key in ob”循环中返回结果?

嵌套循环:最后一个循环总是返回最后一个数组对象

PHP删除for循环结果的最后一个逗号

循环结果数组的最后一个索引

蓝鸟答应每一个都不返回最后的结果

字典仅返回for循环内的最后一个键值对

如何使用for循环返回列表的最后一个元素

循环返回始终相同的最后一个值

Python for 循环只返回字典的最后一个值

循环在条件查询中返回一个结果

sql循环只返回一个结果

Foreach循环仅返回第一个结果

Python 循环只返回一个结果

为什么for循环仅显示最后一个循环的结果

for循环生成的2维JavaScript数组被最后一个循环结果覆盖

在循环结果中发出修整最后一个单词的问题

jQuery选择器仅在php循环结果的末尾选择最后一个id

我如何只打印“ for”循环中的最后一个结果

从嵌套forEach循环的最后一个结果中删除逗号

为什么我的for循环仅显示最后一个结果?

循环只将最后一个结果添加到列表中

只有 for 循环迭代的最后一个结果被保存在字典中

JavaScript执行循环,但仅查看数组中最后一个元素的结果

在 for 循环中只显示系列中的最后一个结果

使... of跳过循环的最后一个元素

while 循环中的 Foreach 循环只返回一个结果

foreach内部foreach只返回最后一个结果吗?