Dear Rui, Not working. I have entirely removed the column containing % but am still bootless:
> head(coredata(INFYTX)) INFY Historical Data INFY Historical Data INFY Historical Data INFY Historical Data [1,] "47.26" "44.28" "47.56" "44.28" [2,] "46.30" "44.92" "46.53" "44.06" [3,] "45.82" "47.27" "47.50" "45.63" [4,] "45.62" "46.06" "46.16" "44.73" [5,] "45.05" "46.28" "46.50" "44.77" [6,] "45.28" "44.80" "46.84" "44.53" INFY Historical Data [1,] "1805267" [2,] "1536300" [3,] "887774" [4,] "944036" [5,] "759898" [6,] "1185402" > class(coredata(INFYTX)) <- "numeric" > head(coredata(INFYTX)) INFY Historical Data INFY Historical Data INFY Historical Data INFY Historical Data [1,] "47.26" "44.28" "47.56" "44.28" [2,] "46.3" "44.92" "46.53" "44.06" [3,] "45.82" "47.27" "47.5" "45.63" [4,] "45.62" "46.06" "46.16" "44.73" [5,] "45.05" "46.28" "46.5" "44.77" [6,] "45.28" "44.8" "46.84" "44.53" INFY Historical Data [1,] "1805267" [2,] "1536300" [3,] "887774" [4,] "944036" [5,] "759898" [6,] "1185402" THanking you, Yours sincerely, AKSHAY M KULKARNI ________________________________ From: Rui Barradas <ruipbarra...@sapo.pt> Sent: Thursday, April 13, 2023 12:46 AM To: akshay kulkarni <akshay...@hotmail.com>; R help Mailing list <r-help@r-project.org> Subject: Re: [R] converting a character matrix into numeric.... �s 19:57 de 12/04/2023, akshay kulkarni escreveu: > Dear members, > I have an xts object: > >> head(INFYTX) > INFY Historical Data INFY Historical Data.1 INFY Historical Data.2 > 2003-04-16 "47.26" "44.28" "47.56" > 2003-04-17 "46.30" "44.92" "46.53" > 2003-04-21 "45.82" "47.27" "47.50" > 2003-04-22 "45.62" "46.06" "46.16" > 2003-04-23 "45.05" "46.28" "46.50" > 2003-04-24 "45.28" "44.80" "46.84" > INFY Historical Data.3 INFY Historical Data.4 > 2003-04-16 "44.28" "1805267" "5.77%" > 2003-04-17 "44.06" "1536300" "-2.03%" > 2003-04-21 "45.63" "887774" "-1.04%" > 2003-04-22 "44.73" "944036" "-0.44%" > 2003-04-23 "44.77" "759898" "-1.25%" > 2003-04-24 "44.53" "1185402" "0.51%" > > But it is populated with character values and I want to convert them to > numeric. THe following code doesn't work: > >> head(coredata(INFYTX)) > INFY Historical Data INFY Historical Data.1 INFY Historical Data.2 INFY > Historical Data.3 > [1,] "47.26" "44.28" "47.56" > "44.28" > [2,] "46.30" "44.92" "46.53" > "44.06" > [3,] "45.82" "47.27" "47.50" > "45.63" > [4,] "45.62" "46.06" "46.16" > "44.73" > [5,] "45.05" "46.28" "46.50" > "44.77" > [6,] "45.28" "44.80" "46.84" > "44.53" > INFY Historical Data.4 > [1,] "1805267" "5.77%" > [2,] "1536300" "-2.03%" > [3,] "887774" "-1.04%" > [4,] "944036" "-0.44%" > [5,] "759898" "-1.25%" > [6,] "1185402" "0.51%" > >> class(coredata(INFYTX)) > [1] "matrix" "array" >> class(coredata(INFYTX)) <- "numeric" > Warning message: > In class(coredata(INFYTX)) <- "numeric" : NAs introduced by coercion >> class(coredata(INFYTX)) > [1] "matrix" "array" >> head(coredata(INFYTX)) > INFY Historical Data INFY Historical Data.1 INFY Historical Data.2 INFY > Historical Data.3 > [1,] "47.26" "44.28" "47.56" > "44.28" > [2,] "46.3" "44.92" "46.53" > "44.06" > [3,] "45.82" "47.27" "47.5" > "45.63" > [4,] "45.62" "46.06" "46.16" > "44.73" > [5,] "45.05" "46.28" "46.5" > "44.77" > [6,] "45.28" "44.8" "46.84" > "44.53" > INFY Historical Data.4 > [1,] "1805267" NA > [2,] "1536300" NA > [3,] "887774" NA > [4,] "944036" NA > [5,] "759898" NA > [6,] "1185402" NA > > Why is the coredata matrix not changing to numeric when the class is changed > to numeric? How else to convert coredata into numeric? > > THanking you, > Yours sincerely, > AKSHAY M KULKARNI > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. Hello, Those NA come from trying to coerce character strings with "%" to numeric. Try instead to first remove the unwanted characters. mat <- matrix(c(0.1, 0.2, "5.77%", "-2.03%"), ncol = 2L) mat[] <- apply(mat, 2, \(x) sub("%", "", x)) class(mat) <- "numeric" mat #> [,1] [,2] #> [1,] 0.1 5.77 #> [2,] 0.2 -2.03 Hope this helps, Rui Barradas [[alternative HTML version deleted]]
______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.