【发布时间】:2021-03-06 12:41:15
【问题描述】:
我有一个包含超过 400'000 行的数据框。我正在尝试按以下方式组织我的数据:
for (i in 1:nrow(full_data)) {
if (full_data$amount0In[i] > full_data$amount0Out[i]) {
full_data$amount0[i] <- full_data$amount0In[i]
full_data$amount1[i] <- -full_data$amount1Out[i]
} else {
full_data$amount0[i] <- -full_data$amount0Out[i]
full_data$amount1[i] <- full_data$amount1In[i]
}
}
此代码有效,但计算时间很长。是否有任何替代方案(例如矢量化)可以使这段代码更高效?
【问题讨论】:
-
可能 - 你能描述一下你的代码在做什么吗?此外,看起来只有 1 个循环 - 嵌套循环是指在另一个循环中有一个循环。
-
不要使用循环。直接处理数据框中的列。 StackOverflow 上有很多很多很多问题,网络上的教程会告诉你该怎么做。
-
我找不到这方面的具体例子。您能否分享一个很好的资源来解释这一点?
-
这是一个针对新 R 用户的blog post on vectorization。或下载The R Inferno的免费PDF。
标签: r loops vectorization