R解码用base64编码的列

时间:2016-05-02 10:24:55

标签: r base64

在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

1 个答案:

答案 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