将十六进制列转换为 R 中的文本

Convert column of Hex into Text in R

我是R新手,请见谅。我通过 odbc 从 Access 数据库导入了 table:

df <- select(dbReadTable(accdb_path, name ="accdb_table"),"Col_1","Col_2","Col_3")

对于

> typeof(df$Col_3) 

我明白了

[1] "list"

使用库(dplyr.teradata)。我将 blob 转换为字符串(这里可能已经在错误的路径上):

df$Hex <- blob_to_string(df$Col_3)

现在以一个充满十六进制的列 (typeof = character) 结尾:

df[1,4] 

[1] 49206765742061206c6f74206f662048657820616e642068617665207468652069737375652077697468207370656369616c2063687261637465727320696e204765726d616e206c616e6775616765206c696b65206e2b4150592d7

我的问题是,如何将 Col_3 中的每个值转换为正确的文本(如果可能,关于 ü、ö、ä 和 ß 等德语特殊字符)。

我知道这个解决方案 ,但无法正确应用:

df$Text <- rawToChar(as.raw(strtoi(df$Hex, 16L)))

Fehler in rawToChar(as.raw(strtoi(BinData$Hex, 16L))) : 
  Zeichenkette '[=15=][=15=][=15=][=15=][=15=][=15=][=15=][=15=][=15=][=15=][=15=][=15=][=15=][=15=][=15=][=15=][=15=][=15=][=15=]\

谢谢!

如果我理解正确的话,你想做什么来将函数应用于列表的每个元素,以便它 returns 一个字符向量(你可以添加到数据框,如果你希望如此)。

这可以通过 purrr 系列函数轻松实现。以下获取每个元素 df$Col_3 并运行函数(每个元素都是给定函数中的 x)

purrr::map_chr(.x = df$Col_3,
               .f = function(x) {rawToChar(as.raw(strtoi(x,16L)))})

您可能应该使用基本 R 函数实现相同的效果,例如 lapply() 后跟 unlist()sapply(),但使用 purrr 通常更容易找到不一致的结果.