【问题标题】:replace a character element of a data frame替换数据框的字符元素
【发布时间】:2013-12-23 03:59:57
【问题描述】:

我有一个数据框和一些字符误读,

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

【问题讨论】:

  • 试试example1[8] &lt;- "SOREN KAH"
  • 是的,他的问题是他没有意识到他正在处理因素。
  • @Oriol Prat 我看到您以前从未接受过答案。如果我的答案(或您在过去几个月中收到的任何其他答案)解决了您应该接受的问题:它通过标记您的问题的解决方案来帮助社区。它还为您赢得了地位 - 并增加了将来有人回答您的问题的可能性。您可以通过选择答案左侧的勾号来执行此操作。点赞还有助于标记有用的内容,但不会为您赢得地位。

标签: r replace dataframe character element


【解决方案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] &lt;- "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

【讨论】:

    猜你喜欢
    • 2016-04-25
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    相关资源
    最近更新 更多