【发布时间】:2016-07-05 23:59:25
【问题描述】:
我有一个包含大量变量的数据框。这些变量的一个子集的名称中包含一个数字(例如x1_v 和x2_v),我想将这些变量的值重新编码为任意大小的子集。我使用 for 循环尝试了以下操作,但它没有重新编码任何内容。
library(car)
library(magrittr)
# Sample df
x1_v <- seq(1:5)
x2_v <- rep(5,5)
fun <- c("a","b","c","r","q")
data <- data.frame(x1_v, x2_v, fun)
# Loop
for (i in 1:2){
paste0("data$x", i, "_v") %>%
assign(paste0("data$x", i, "_v") %>%
recode("c(0, 5) = NA"))
}
我知道这通过使用循环和assign() 违反了几乎所有 R 协议,但我试图理解
- 为什么这不起作用
- 我如何使用 apply 之类的东西来解决这个问题。
我认为制作一个列表是有意义的,但我想将我的所有数据保留在最后的数据框类中。
【问题讨论】:
-
library(car)我猜想引用recode() -
提供一个您希望输出的示例可能会有所帮助?
标签: r loops vectorization