R S4 对象数据类型哈希

问题描述

有哈希的数据类型吗?我试图为哈希值生成一个具有数据类型字符的类,但出现错误

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...