【发布时间】:2021-12-25 13:44:40
【问题描述】:
我有一个包含表情符号名称而不是实际图像的字符串 (data$text) 的数据集(例如,FACE_WITH_TEARS_OF_JOY)。现在我正在尝试用实际的表情符号替换每个表情符号名称。名称和表情符号保存在一个额外的数据集中,用作“字典”(emojis$name 和 emojis$emoji)。
这是我的数据集:
data <- structure(list(text = c("blabla HUGGING_FACE PARTY_POPPER", "bla FACE_WITH_TEARS_OF_JOY bla FACE_WITH_TEARS_OF_JOY", "PARTY_POPPER")), class = "data.frame", row.names = c(NA, -3L))
看起来像:
text
1 blabla HUGGING_FACE PARTY_POPPER
2 bla FACE_WITH_TEARS_OF_JOY bla FACE_WITH_TEARS_OF_JOY
3 PARTY_POPPER
请注意,表情符号名称只是文本的一部分。文本的其余部分应保留。
这是我的“字典”:
emojis <- structure(list(name = c("FACE_WITH_TEARS_OF_JOY", "HUGGING_FACE",
"PARTY_POPPER"), emoji = c("\U0001f602", "\U0001f917", "\U0001f389"
)), class = "data.frame", row.names = c(NA, -3L))
看起来像:
name emoji
1 FACE_WITH_TEARS_OF_JOY \U0001f602
2 HUGGING_FACE \U0001f917
3 PARTY_POPPER \U0001f389
对于单个表情符号,此代码有效:
data$text <- gsub("FACE_WITH_TEARS_OF_JOY", "\U0001f602", data$text)
结果是:
text
1 blabla HUGGING_FACE PARTY_POPPER
2 bla \U0001f602 bla \U0001f602
3 PARTY_POPPER
但是,我也想替换其他表情符号名称。结果应该是:
text
1 blabla \U0001f917 \U0001f389
2 bla \U0001f602 bla \U0001f602
3 \U0001f389
由于有成千上万的表情符号,我需要类似的东西:
data$text <- gsub(emojis$name, emojis$emoji, data$text)
这不起作用(错误:“参数'模式'的长度> 1,只有第一个元素将使用数字”)我自己找不到解决方案。
提前致谢!
【问题讨论】:
-
请阅读r标签页面顶部的信息,并特别注意需要最少但完整的可重现代码和输入(使用
dput)。由于缺少输入,任何人都无法运行此代码。 -
感谢您现在允许我 - 我已经编辑了问题,希望现在更好。
标签: r gsub string-substitution