-1

I have the following data frame:


df <- structure(list(Foo.ID.6hr.SP = c("0.00261", "0.00271", "0.00281", 
"0.00258", "0.00281", "0.00305"), Foo.IP.6hr.SP = c("0.00439", 
"0.00496", "0.00469", "0.00437", "0.00454", "0.00418"), LPS.IV.SP = c("0.00294", 
"0.00290", "0.00267", "0.00278", "0.00288", "0.00295"), MPL.IV.SP = c("0.00335", 
"0.00326", "0.00292", "0.00318", "0.00321", "0.00329")), .Names = c("Foo.ID.6hr.SP", 
"Foo.IP.6hr.SP", "LPS.IV.SP", "MPL.IV.SP"), row.names = c("B_Fo_LN", 
"B_Fo_MLN", "B_Fo_PC", "B_Fo_Sp", "B_FrE_BM", "B_FrE_FL"), class = "data.frame")

df
#>          Foo.ID.6hr.SP Foo.IP.6hr.SP LPS.IV.SP MPL.IV.SP
#> B_Fo_LN        0.00261       0.00439   0.00294   0.00335
#> B_Fo_MLN       0.00271       0.00496   0.00290   0.00326
#> B_Fo_PC        0.00281       0.00469   0.00267   0.00292
#> B_Fo_Sp        0.00258       0.00437   0.00278   0.00318
#> B_FrE_BM       0.00281       0.00454   0.00288   0.00321
#> B_FrE_FL       0.00305       0.00418   0.00295   0.00329


str(df)
#> 'data.frame':    6 obs. of  4 variables:
#>  $ Foo.ID.6hr.SP: chr  "0.00261" "0.00271" "0.00281" "0.00258" ...
#>  $ Foo.IP.6hr.SP: chr  "0.00439" "0.00496" "0.00469" "0.00437" ...
#>  $ LPS.IV.SP    : chr  "0.00294" "0.00290" "0.00267" "0.00278" ...
#>  $ MPL.IV.SP    : chr  "0.00335" "0.00326" "0.00292" "0.00318" ...

As shown in str(df) the value is inchr`. How can I convert to numeric?

I tried this but the row name is gone:

> as.data.frame(sapply(df,as.numeric))
  Foo.ID.6hr.SP Foo.IP.6hr.SP LPS.IV.SP MPL.IV.SP
1       0.00261       0.00439   0.00294   0.00335
2       0.00271       0.00496   0.00290   0.00326
3       0.00281       0.00469   0.00267   0.00292
4       0.00258       0.00437   0.00278   0.00318
5       0.00281       0.00454   0.00288   0.00321
6       0.00305       0.00418   0.00295   0.00329
pdubois
  • 7,640
  • 21
  • 70
  • 99

1 Answers1

2

We can do

df[] <- lapply(df, as.numeric)

Or using dplyr

library(dplyr)
df %>%
  mutate_all(as.numeric) 
akrun
  • 874,273
  • 37
  • 540
  • 662