【问题标题】:How to remove words using grep in other languages?如何在其他语言中使用 grep 删除单词?
【发布时间】:2019-01-12 21:05:56
【问题描述】:

我尝试使用希腊语的 grep 从数据框中删除字符串。

df <- data.frame(freetext = c("Εδώ και αρκετό καιρό που συνεχίζουν","και τώρα που έγιναν"))

df <- df_text[!grepl("και|που", df),]

错误是

Error in `$<-.data.frame`(`*tmp*`, text, value = character(0)) : 
  replacement has 0 rows, data has 2

语言有问题吗?

预期的数据框:

df <- data.frame(freetext = c("Εδώ αρκετό καιρό συνεχίζουν","τώρα έγιναν"))

【问题讨论】:

  • 您的问题中缺少df_text,或者应该是df,在这种情况下我实际上没有收到错误。
  • 而不是df_text[!grepl(...)],如果你想反转grep的意义,即找到所有不匹配的行,使用grep(..., invert=T)

标签: r regex


【解决方案1】:

语言没有问题,但还有其他几个问题。你想要的

df$freetext <- gsub("(και|που)[$ ]", "", df$freetext)
df
#                      freetext
# 1 Εδώ αρκετό καιρό συνεχίζουν
# 2                 τώρα έγιναν

grepl 仅用于检测某些模式,不做任何更改。为此你想要gsub。然后你还要处理一个向量df$freetext,而不是整个数据框df,并且分配必须是同一列,而不是整个数据框。最后,该模式需要[$ ] 表示字符的结尾或空格,以免从 καιρό 中删除 και。

【讨论】:

  • 即使我使用df_text2 &lt;- !grepl("και|που", df_text),结果也不是我们预期的数据框。
  • @foc,请将您的预期输出添加到问题中。
猜你喜欢
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 2014-09-10
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
相关资源
最近更新 更多