Estou trabalhando em um trecho de código R para calcular a diversidade em um conjunto de dados de taxonomias de fungos. O tutorial que estou seguindo tem um trecho de código que soma cada linha, o que não está funcionando porque a primeira coluna (que exibe os números da OTU) não é numérica, mas sim de caracteres. Aqui está o trecho de código:
# make relative abundances
dat_relab = as.data.frame(sapply(dat_clean, FUN = function(x){x / sum(x)}))
rownames(dat_relab) = rownames(dat_clean)
# Remove low abundant ASVs, i.e. for which total relative abundance is lower than 0.01%
dat_relab$relab = rowSums(dat_relab) # adds column with total number of reads per ASV
keep01 = which(dat_relab$relab > 0.0001) # selects which ASVs fit the cut-off
dat_relab01 = dat_relab[keep01, -26] # outputs filtered table, and removes added column with number reads
# Select the ASVs with relative abundance higher than 0.01% from the ASV table with read number for the subsequent analysis
dat_clean2 = dat_clean[rownames(dat_relab01), colnames(dat_relab01)]
O código para na 2ª linha e fornece o seguinte erro: Erro em sum(x): 'tipo' (caractere) de argumento inválido
Eu entendo logicamente qual é o problema aqui; a primeira coluna dos dados não é numérica e não será somada. Meu problema é entender como corrigir isso e por que não está dando errado no tutorial (que tem os dados formatados da mesma forma).
Ele soma cada coluna!
Para alguns dados de brinquedos
sua tentativa
problemas
o que é bastante informativo. Para evitar, podemos selecionar
numeric
colunasCombinando com o tutorial.
--ou qualquer um dos dois--
É difícil dizer isso sem ver o "tutorial".
Antes de chamar
rowSums
, basta selecionar as colunas numéricas.Usando os dados de exemplo de @Friede,
Você pode capturar isso em uma nova coluna, conforme necessário.
Isso pressupõe que qualquer coisa
numeric
deve ser incluída nas somas das linhas. Se você tiver colunas numéricas que não devem ser incluídas, uma etapa comum é usar índices inteiros (por exemplo,dat_clean[, 2:3]
), mas isso pode levar à reorganização das colunas e ao esquecimento de atualizar os índices.Em vez disso, podemos seguir mais um ou dois passos para evitar alguns nomes de colunas: