在R中,我有一个数据框,其中包含一列"内容"用base64编码。我可以解码一个"内容"在行355中,如下所示;
library(base64enc)
rawToChar(base64decode(df[355,"content"]))
当我尝试使用
进行解码时rawToChar(base64decode(df$content))
我收到错误"在字符串"中嵌入了nul。如何解码整列?
编辑:我使用了循环,看起来没问题,但我不认为这是一个优雅的解决方案。
comments.decoded <- data.frame(comments=character(),
stringsAsFactors=FALSE)
for(i in 1:nrow(df))
{
clean.row <- iconv(rawToChar(base64decode(df[i,"content"])), "latin1", "UTF-8")
clean.row <- data.frame(trimws(clean.row), stringsAsFactors=FALSE)
comments.decoded <- rbind(comments.decoded, clean.row)
}
comments.decoded
答案 0 :(得分:0)
致quote R基金会的一位总统:
R长时间不支持字符串中的嵌入空值 [...]如果您想要包含空值的字节,请不要存储它们 字符变量,将它们存储在原始向量中
您可以尝试
sapply(df$content, function(x) {
res <- try(rawToChar(base64decode(x) ))
if (!inherits(res, "try-error")) res else NA
})
对于包含NA
的字符串,这会产生nul
。