对于循环,在 R 中进行替换

For loops, with replacement in R

我有一个包含因子的数据框。

dat <- c("low", "high", "middle", "middle", "low", "low")
dat <- factor(dat, levels = c("low", "middle", "high")
lvl <- unique(sort(dat))
x <- seq(1,3,1)

我想遍历每个因素,如果它等于第 i 个级别,则用数字变量替换这些因素。

for(i in 1:3){
 if(dat == lvl[i]) {
    dat <- x[i]
    }
  }

我不断收到此错误:the condition has length > 1 and only the first element will be used

一定有简单的解决办法吧? 为清楚起见编辑:

我并不是要用相应的级别替换向量。我正在尝试用与级别相对应的某个序列(在本例中为 1、2、3)中的术语替换条目。

您可以使用 ifelse,但对于此特定任务,您可以只使用 as.numeric。

dat <- as.numeric(dat)

这是你想要做的吗?

dat <- factor(c("low", "high", "middle", "middle", "low", "low"))
levels(dat) 
# [1] "high"   "low"    "middle"

lvl = c(99, 86, 123) # New names for level
levels(dat) = lvl
dat
# 86  99  123 123 86  86 
# Levels: 99 86 123