我有一个数据框和一些字符误读,
example1
1 SABRINA MOCKENHAUPT
2 IRINA MIKITENKO
3 MARILSON DOS SANTOS
4 RYAN HALL
5 TIKI GELANA
6 KENTARO NAKAMOTO
7 JAOUAD GHARIB
8 S…REN KAH
9 CONSTANTINA DITA
我想替换一些元素。例如,替换第八个元素exemple1$exemple1[[8]]<-"SÖREN KAH"
。但它告诉我这个错误
In `[[<-.factor`(`*tmp*`, 8, value = c(57L, 29L, 41L, 54L, 65L, :invalid factor level, NA generated
答案 0 :(得分:1)
你没有提供一个可重复的例子,所以我猜一点:但问题似乎是example1
由因素组成。
这是example1
example1 <- as.factor(LETTERS[1:9])
当您打印factor1
时,您可能会看到以下内容:
R> example1
[1] A B C D E F G H I
Levels: A B C D E F G H I
现在,如果我们尝试使用非因子替换任何项目(上面levels
中未列出的内容),我们将收到以下错误(与您的类似):
R> example1[8] <- "KK"
Warning message:
In `[<-.factor`(`*tmp*`, 8, value = "KK") :
invalid factor level, NA generated
但请注意,您可以将一个列出的因素替换为另一个 - 这意味着example1[8] <- "A"
有效。
我的猜测是你不想要因素 - 你想要角色。所以你需要强迫example1
加入角色。这样做如下
R> example1.ch <- as.character(example1)
否则您的替换将起作用:
R> example1.ch[8] <- 'kk'
R> example1.ch
[1] "A" "B" "C" "D" "E" "F" "G" "kk" "I"
通常,您可以使用命令str()
来了解您的数据对象是什么 - 当您遇到像这样的奇怪错误时,这将有所帮助。
R> str(example1)
Factor w/ 9 levels "A","B","C","D",..: 1 2 3 4 5 6 7 1 9