I have a list with data in scientific notation that uses commas instead of dots as decimal separator. I want to change all commas to dots. Someone great in here showed me how to do this for dataframes:
text <- "3,063E+01 1,775E-02 6,641E-07 3,747E-02"
read.table(text=text, dec = ",")
V1 V2 V3 V4
1 30.63 0.01775 6.641e-07 0.03747
df <- read.table(text=text)
df <- sapply(df, gsub, pattern = ",", replacement= ".")
df <- sapply(df, as.numeric)
V1 V2 V3 V4
3.063e+01 1.775e-02 6.641e-07 3.747e-02
I wanted to do the same to a list using lapply but it did not work out:
mferg_matrix[[1]]
X2 X3 X4
84 1,606E-07 1,642E-07 1,731E-07
85 2,883E-07 2,789E-07 2,554E-07
mferg_matrix <- lapply(mferg_matrix,gsub, pattern = ",", replacement= ".")
mferg_matrix[[1]]
[1] "c(30. 52)" "c(33. 55)" "c(35. 51)"
mferg_matrix <- lapply(mferg_matrix,as.numeric)
Es gab 11 Warnungen (Anzeige mit warnings())
> mferg_matrix[[1]]
[1] NA NA NA
It did not work out using sapply either.
You may need to use
lapply(mferg_matrix, function(x) {
x[] <- lapply(
lapply(x,gsub, pattern = ",", replacement= "."),
as.numeric)
x})
mferg_matrix <- list(structure(list(X2 = c("1,606E-07", "2,883E-07"),
X3 = c("1,642E-07","2,789E-07"), X4 = c("1,731E-07", "2,554E-07")),
.Names = c("X2", "X3", "X4"), class = "data.frame", row.names = c("84", "85")),
structure(list(X2 = c("1,606E-07", "2,883E-07"), X3 = c("1,642E-07",
"2,789E-07"), X4 = c("1,731E-07", "2,554E-07")), .Names = c("X2",
"X3", "X4"), class = "data.frame", row.names = c("84", "85"
)), structure(list(X2 = c("1,606E-07", "2,883E-07"), X3 = c("1,642E-07",
"2,789E-07"), X4 = c("1,731E-07", "2,554E-07")), .Names = c("X2",
"X3", "X4"), class = "data.frame", row.names = c("84", "85"
)))