首页 > 解决方案 > 在R中循环多个变量

问题描述

我一直在使用 Stata,循环很容易在那里执行。但是,在 RI 中,在循环变量时遇到了一些错误。我在这里尝试了一些代码,但它不起作用。基本上,我试图通过记录值来清理数据。在记录它们之前,我必须先将负值转换为正值。

我打算遍历数据框上的多个公司统计数据,但这样做时遇到了错误。

varlist <- c("revenue", "profit", "cost")`

for (v in varlist) {
  data$log_v <- log(abs(ifelse(data$v>1, data$v, NA)))
  data$log_v <- ifelse(data$v<0, data$log_v*-1,data$log_v)
}

$<-.data.frame( tmp ,"log_v", value = numeric(0)) 中的错误:替换有 0 行,数据有 9

标签: rloops

解决方案


看起来您可能假设 data$log_v 被读取为 data$log_profit,但 R 将拥有它自己的数据并将其读取为“log_v”所有 3 次。这个例子可能不是你想要做的所有事情,但它可能会对你有所帮助。它获取变量列表并通过它们的字符串名称引用它们。

df <- data.frame(x = rnorm(15), y = rnorm(15))

vars <- c("x", "y")

for (v in vars) {
  df[paste0("log_", v)] <- log(abs(df[v]))
}

这与 data.table 中的内容大致相同。

library(data.table)

dt <- data.table(x = rnorm(15), y = rnorm(15))
dt[, `:=`(log_x = log(abs(x)), log_y = log(abs(y)))]

推荐阅读