r - 在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
解决方案
看起来您可能假设 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)))]
推荐阅读
- java - 乌尔都语到乌尔都语使用 SpeechRecognizer 和 RecognitionListener
- c# - Xamarin.Andriod:如何从收件箱中删除或标记为已读消息(对话)
- sql - DB2 为 MQT(Materialized Query Table)创建临时表以进行增量刷新
- rust - Rust 块和连接
- nginx - 有没有办法处理一个 URL 并用原始的子字符串(模式)形成一个新的 URL?
- python - 除了 _getexif() 之外,还有其他方法可以从图像中提取元数据吗?
- python - 如何使用排列生成的列表值生成文本
- python - 如何从具有相似元素的烧瓶中的多个单独字典返回结果
- macos - 在 OSX 中处理基于 Cocoa 的插件的主机菜单启用
- excel - 无法运行 Personal.xlsb 宏,除非“步入”