【发布时间】:2019-08-27 12:44:22
【问题描述】:
我想只用两个级别 DOG 和 CAT 替换我的级别 dog1 ... dog4 和 cat1 ... cat4,但是如果我使用 grepl 我的输出仅作为 NA。
在我的代码中:
x <- (rep(c("dog1","dog2","dog3","dog4","cat1","cat2","cat3","cat4"),2)) #Levels
y<-rnorm(16)
d<-data.frame(cbind(x,y))
head(d)
x y
1 dog1 0.906357739138289
2 dog2 0.974674552504268
3 dog3 0.664045049199848
4 dog4 0.911777985232099
5 cat1 0.246575548162824
6 cat2 0.758069789161901
d$x[grepl("dog", d$x)] <- "DOG"
警告信息:在
[<-.factor(*tmp*, grepl("dog", d$x), value = c(NA, NA, NA, : 无效因子水平,NA生成
d$x[grepl("cat", d$x)] <- "CAT"
Warning message:
In `[<-.factor`(`*tmp*`, grepl("cat", d$x), value = c(NA_integer_, :
invalid factor level, NA generated
head(d)
x y
1 <NA> 0.906357739138289
2 <NA> 0.974674552504268
3 <NA> 0.664045049199848
4 <NA> 0.911777985232099
5 <NA> 0.246575548162824
6 <NA> 0.758069789161901
如果代码运行正常,我想要的输出是:
head(d)
x y
1 DOG 0.906357739138289
2 DOG 0.974674552504268
3 DOG 0.664045049199848
4 DOG 0.911777985232099
5 CAT 0.246575548162824
6 CAT 0.758069789161901
【问题讨论】: