1

我有一个数据框,由 colnames 中的 sample_id、rownames 中的genenames 和一个值矩阵(rnaseq tpm)组成。我想从 M3C 包中执行 pca() 。我首先使用 log2 转换了我的矩阵:

df_log2 <- mutate_if(df, is.numeric, log2)

然后使用以下方法带回行名:

rownames(df_log2) <- rownames(df)

但是,当我尝试 PCA 时,出现以下错误:

> PCA <- pca(df)
***PCA wrapper function*** running... Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric

我检查了 df 并且某些列包含“-inf”作为第一个 df 的 log2(0) 的值。

“-inf”是问题吗?如果是,我该如何处理?

4

1 回答 1

1

您可以尝试像 log(x + 1) 这样的转换,或者分别像 sqrt(x) 和 x^(1/3) 这样的平方根或立方根转换:

# log(x + 1)
df_log2 <- mutate_if(df, is.numeric, .funs = function(x){log(x + 1)})
# sqrt(x)
df_log2 <- mutate_if(df, is.numeric, .funs = function(x){sqrt(x)})
# x^(1/3)
df_log2 <- mutate_if(df, is.numeric, .funs = function(x){x^(1/3)})
于 2020-04-17T22:14:01.433 回答