对于循环,在R中替换

时间:2015-04-26 01:54:05

标签: r loops replace

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

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)中的术语替换该术语,该序列对应于该级别。

2 个答案:

答案 0 :(得分:1)

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

dat <- as.numeric(dat)

答案 1 :(得分:0)

这是你想要做的吗?

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