R语言 无法替换因子值

enyaitl3  于 2023-05-04  发布在  其他
关注(0)|答案(1)|浏览(166)

我有一个数据集,prgeng。7列,其中1列为educ
我想用其他值替换educ的值。我需要将值1:9替换为1,将10:12替换为2,将13替换为3等等。
使用:操作符时,它不起作用。

prgeng <- load(url('https://github.com/matloff/fasteR/blob/master/data/prgeng.RData?raw=true'))
educ <- prgeng$educ

educ[educ == 1:9] <- 1 # doesnt work
# Warning: longer object length is not a multiple of shorter object lengthWarning: longer object length is not a multiple of shorter object length

educ[educ == 1] <- 1 # works

我认为这很奇怪,因为另一方面工作。

t1 <- 1:2500
t1[t1 == 1:1000] <- 1 # this works

我明白警告是关键,但我不能理解它的意思。这里的其他例子是基于稍微不同的情况。我不认为它会发生,因为educ是一个因素,因为:
1.我把educ转换成了一个矢量,它什么也没改变
1.我可以一个接一个地改变这些值

hsvhsicv

hsvhsicv1#

我们可以使用%in%代替==,因为==是元素级运算符

educ[educ %in% 1:9] <- 1

相关问题