问题描述
有哈希的数据类型吗?我试图为哈希值生成一个具有数据类型字符的类,但出现错误:
validobject(.Object) 中的错误:无效的类“图片”对象:1: 类“图片”中插槽“mD5sum”的无效对象:得到类“hash”, 应该是或扩展类“字符”无效类“图片”对象 2:类“图片”中插槽“sHA1sum”的无效对象:得到类 “hash”,应该是或扩展类“character”调用:<.....>
setClass("Picture",slots=list(id="numeric",mD5sum="character",sHA1sum="character"))
md5sum <- as.character(openssl::md5(file(full_file_path)))
sha1sum <- as.character(openssl::sha1(file(full_file_path)))
pic_obj <- new("Picture",id=1,mD5sum=md5sum,sHA1sum=sha1sum)
完整代码块:
```{r}
setClass("Picture",sHA1sum="character"))
full_file_path <- "testphoto.JPG"
md5sum <- as.character(openssl::md5(file(full_file_path)))
sha1sum <- as.character(openssl::sha1(file(full_file_path)))
pic_obj <- new("Picture",sHA1sum=sha1sum)
```
解决方法
不,hash
不是原子类型(R 最接近“数据类型”的想法)。哈希值(例如来自 openssl::md5
)通常输出为 character
(但原则上如果输出足够小,它们可以是 integer
)。
如果你想知道一个类是否存在,你可以使用isClass
:
> isClass("hash")
[1] FALSE
> isClass("character")
[1] TRUE