我在R中使用包h5
来编写库。因此,出于同样的原因,我试图从头开始使用函数createDataSet
来构建数据集,
createDataSet(.Object=HDF.handle,datasetname="chrX2",data=matrix(nrow=10,ncol=10,data=NA),compression=0L,chunksize=4L,type="double")
会导致错误消息:
unable to find an inherited method for function ‘createDataSet’ for signature ‘"H5File", "character", "matrix", "character", "missing", "integer", "missing", "integer", "missing"’
我已将其缩小到我向该函数提供的type
,dimensions
,maxdimensions
参数。
关于type
,手册说character; Character specifying data type, can be either one of:
,因此指定“double”的长度为1的字符向量应该有效。
我还考虑了包可能从提供的矩阵推断矩阵的数据类型的可能性,因为指定matrix(nrow=10,ncol=10,data=NA)
生成包含数据类型逻辑的NA的矩阵。这反过来会与type
参数冲突。
有人可以告诉我在这种情况下我做错了什么。
此外,关于dimensions
和maxdimensions
参数。我不太清楚这些参数控制的是什么。
从手册中,
尺寸定义为
integer; Dimensions of dataset to be created.
和maxdimensions
定义为integer; Maximum dimensions used for dataset, NA sets maxdimensions to ’unlimited’
我有点困惑,因为一旦创建的HDF格式的数据集的形状在不删除数据集的情况下无法更改。在这种情况下maxdim
控制什么?
这是否与提供的数据形状有某种关系?
因此矩阵的dimensions
应为c(nrow(matrix),ncol(matrix))
,因此maxdim
也应相同。
链接到手册here
更新
我创建了数据集。我发现冲突位于参数data
和上面提到的三个参数之间。从参数列表中删除数据可以解决问题,但是在创建数据集时,{I} {{p}}确实无法清楚地了解这一点。
maxdimensions