使用 R 中的 M3C 处理来自 pca() 的数据帧中的“0”和“-inf”
deal with "0" and "-inf" in a dataframe from pca() with M3C in R
我有一个数据框,其中包含列名中的 sample_id、行名中的基因名和值矩阵 (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”的问题吗?如果是,我该如何处理?
您可以分别尝试像 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)})
我有一个数据框,其中包含列名中的 sample_id、行名中的基因名和值矩阵 (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”的问题吗?如果是,我该如何处理?
您可以分别尝试像 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)})