GSVA分析时,出现以下报错:
gbmPar <- gsvaParam(matrix_gsva_data,
gene_set,
kcdf="Poisson"#“Gaussian” for logCPM,logRPKM,logTPM, “Poisson” for counts
)
gsva_mat <- gsva(gbmPar)
Error in rowVars(x, rows = rows, cols = cols, na.rm = na.rm, refine = refine, :
Argument 'x' must be of type logical, integer or numeric, not 'character'
原因在于matrix_gsva_data(表达矩阵)类型是字符矩阵,这里应该转换为数值矩阵才能进行正常运算。如下:
mat<-matrix_gsva_data
mat %>% data.frame() %>% mutate(across(where(is.character), as.numeric)) %>% as.matrix() -> mat.num
class(mat[2,2])
[1] "character"
class(mat.num[2,2])
[1] "numeric"
随后,将表达矩阵替换为mat.num即可:
gbmPar <- gsvaParam(mat.num,
gene_set,
kcdf="Poisson"#“Gaussian” for logCPM,logRPKM,logTPM, “Poisson” for counts
)
gsva_mat <- gsva(gbmPar)
No annotation package name available in the input data object.
Attempting to directly match identifiers in data to gene sets.
Estimating GSVA scores for 50 gene sets.
Estimating ECDFs with Poisson kernels...
参考:
dplyr-as.numeric保留行名转换数据框(矩阵)的所有字符型列向量为数值型_r语言 矩阵内变为数值,保留行-CSDN博客
GSVA: gene set variation analysis (bioconductor.org)