R 无法处理字符中的空字符串(\0),有谁知道如何处理这个问题?更具体地说,我想使用 ODBC 或 JDBC 连接在数据库中存储复杂的 R 对象。由于复杂的 R 对象不容易映射到数据帧,因此我需要不同的可能性来存储此类对象。一个对象可以是例如:
library(kernlab)
data(iris)
model <- ksvm(Species ~ ., data=iris, type="C-bsvc", kernel="rbfdot", kpar="automatic", C=10)
由于 >model
serialModel <- serialize(model, NULL)
现在我想通过 ODBC/JDBC 存储它。为此,我需要对象的字符串表示形式,以便向数据库发送查询,例如插入。由于结果是原始向量类型的向量,因此我需要将其转换:
stringModel <- rawToChar(serialModel)
还有一个问题:
Error in rawToChar(serialModel) :
embedded nul in string: 'X\n\0\0\0\002\0\002\v\0......
R 无法处理字符串中的 \0。有谁知道如何绕过这个限制?或者是否有一种完全不同的方法来实现这一目标?
提前致谢
你需要
stringModel <- as.character(serialModel)
用于原始位代码的字符表示。 rawToChar 将尝试转换原始位代码,在这种情况下这不是您想要的。
稍后可以通过以下方式将生成的 stringModel 转换回原始模型:
newSerialModel <- as.raw(as.hexmode(stringModel))
newModel <- unserialize(newSerialModel)
all.equal(model,newModel)
[1] TRUE
关于通过 RODBC 将二进制类型写入数据库:就今天而言,RODBC 的小插图读(第 11 页):
二进制类型目前只能是
如此读取,并且它们返回为
类“ODBC 二进制”的列是
原始向量列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)