alterar character para numeric, dentro de uma matriz

Olá amigos, sabem com posso transformar uma matriz de caracteres, em uma matriz numérica ? Queria usar o apply, num determinado conjunto (já removi as colunas que são de caracteres), porém, o erro é que a matriz toda seja de caracteres, preciso transforma-la parte de suas colunas em numérica (dentro de um loop), sem perder as informações de suas dimensões a cada vez que rodar.
head(data[, 1:3]) DMI_OBS MARGINAL_VALUE MARGINAL_COST [1,] "6.96854098333583" "6.65221200159797" "5.27352744344053" [2,] "6.98339853826561" "6.7072041317201" "5.28263898757677" [3,] "6.99836013545516" "6.75898075373724" "5.29181433666923" [4,] "7.01341956926359" "6.80804464548042" "5.30104968504659" [5,] "7.02856890831318" "6.85360715009623" "5.31034016871214" [6,] "7.04380198056193" "6.89645505407463" "5.31968200259941" dim(data data[, 1:3]) [1] 90 3 class(data[, 1:3]) [1] "matrix" mode(data[, 1:3]) [1] "character" soma_acumulada = t(as.matrix( apply(data[, 1:3], 2, sum))) Error in FUN(newX[, i], ...) : invalid 'type' (character) of argument
-- Adriele.

x <- matrix(as.character(rnorm(100)), ncol = 10) typeof(x) apply(x, MARGIN = 2, FUN = function(i) { sum(as.numeric(i)) }) À disposição. Walmes.

Oi, Adriele. Repare no código do Walmes que há duas soluções para você: (i) Converter os valores que estão como character no momento de somá-los (dentro do loop); ou (ii) Assim como para o exemplo ele criou uma matrix de character com base em valores numeric, você pode fazer o oposto com a sua: new_data <- matrix( as.numeric(data[, 1:3]), ncol = 3 ) Caso necessite de precisão maior que as casas decimais default, você pode aumentá-las com o options( digits = quantas_casas_decimais_voce_precisa ) Vai de você ver se vai utilizar novamente estes valores, aí pode ser mais interessante já converter o dado para numeric. Abs, Karina Abs, Karina On Wed, Mar 1, 2017 at 9:55 AM Walmes Zeviani via R-br < r-br@listas.c3sl.ufpr.br> wrote: x <- matrix(as.character(rnorm(100)), ncol = 10) typeof(x) apply(x, MARGIN = 2, FUN = function(i) { sum(as.numeric(i)) }) À disposição. Walmes. _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
participantes (3)
-
Adriele Giaretta Biase
-
Karina Rebuli
-
Walmes Zeviani