【发布时间】:2012-07-05 13:20:26
【问题描述】:
是否有一个预先存在的功能可以为 Mechanical Turk 清理 data.frame 的字符列?以下是它挂断的线路示例:
x <- "Duke\U3e32393cs B or C, no concomittant malignancy, ulcerative colitis, Crohn\U3e32393cs disease, renal, heart or liver failure"
我认为这些是 unicode 字符,但 MT 不允许我在其中继续处理它们。我显然可以很容易地对这些进行正则表达式,但我使用 MT 相当不错,并希望有一个更通用的解决方案来删除所有非 ascii 字符。
编辑
我可以删除编码如下:
> iconv(x,from="UTF-8",to="latin1",sub=".")
[1] "Duke......s B or C, no concomittant malignancy, ulcerative colitis, Crohn......s disease, renal, heart or liver failure"
但这仍然让我对使用非 utf8 编码的 any 元素的向量缺乏更通用的解决方案。
> dput(vec)
c("Colorectal cancer patients Duke\U3e32393cs B or C, no concomittant malignancy, ulcerative colitis, Crohn\U3e32393cs disease, renal, heart or liver failure",
"Patients with Parkinson\U3e32393cs Disease not already on levodopa",
"hi")
请注意,常规文本编码“未知”,它没有转换为“latin1”,所以使用 iconv 的简单解决方案失败。我在下面尝试了一种更细微的解决方案,但我对此不太满意。
【问题讨论】:
-
在测试对象上提供 dput() 不是更好吗?然后将附加属性。
-
@Dwin 那是
dput()的输出。然后我将其复制/粘贴回 R 以检查是否保留了 UTF-8 编码。 -
您希望
iconv(x, "UTF-8", "ASCII", ".")的哪一部分更通用?你的意思是你想要一些能检测当前编码的东西,以防它不是 UTF-8 或 ASCII 吗? -
@JoshO'Brien 没错。见下文。
标签: r mechanicalturk