иметь дело с "0" и "-inf" в кадре данных из pca () с M3 C в R - PullRequest
1 голос
/ 16 апреля 2020

У меня есть фрейм данных, состоящий из sample_id в именах столбцов, genenames в именах строк и матрицы значений (rnaseq tpm). Я хочу выполнить pca () из пакета M3 C. Я сначала 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» в качестве значения в результате log2 (0) из первого df.

Проблема "-inf"? и если да, как я могу справиться с этим?

1 Ответ

1 голос
/ 18 апреля 2020

Вы можете попробовать преобразование, например, log (x + 1), квадрат root или куб root, например 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)})
...