Фрейм данных R: Как управлять преобразованием матрицы, содержащей строки научной нотации, в числовой - PullRequest
1 голос
/ 15 января 2012

У меня есть строковая матрица, где поля были получены из чисел в научной записи. Я хочу преобразовать матрицу символов во фрейм данных и работать с числовыми полями. Во время преобразования матрицы в кадр данных R преобразует строки в коэффициенты, возможно, из-за символа «е» в середине числа. Если для параметра stringAsFactors () задано значение FALSE, столбцы останутся символьными, поэтому все равно не будут числовыми.

Например:

> m
     [,1]    [,2]   
[1,] "1e-07" "4e-06"
[2,] "2e-05" "5e-05"
[3,] "0.03"  "1e-07"
> data.frame(m)
     X1    X2
1 1e-07 4e-06
2 2e-05 5e-05
3  0.03 1e-07
> class(data.frame(m))
[1] "data.frame"
> df = data.frame(m) 
> df
     X1    X2
1 1e-07 4e-06
2 2e-05 5e-05
3  0.03 1e-07
> class(df$X1)
[1] "factor"
> class(df$X2)
[1] "factor"

Как заставить фрейм данных интерпретировать эти строки как числа? data.matrix () на самом деле преобразует строку в научной нотации в числовую, но я хочу знать, есть ли способ напрямую управлять преобразованием матрицы символов в кадр данных, не проходя промежуточный этап преобразования data.matrix (). 1006 *

1 Ответ

7 голосов
/ 15 января 2012

Вы должны сначала преобразовать его в числовую матрицу, , а затем сделать из него data.frame.

# A string matrix
m <- matrix(as.character(runif(6)),3)

# as.data.frame doesn't turn it into numbers...
str(as.data.frame(m)) # factors
str(as.data.frame(m, stringsAsFactors=FALSE)) # strings

d <- m
# Make it numeric first
mode(d) <- "numeric"

# Now turn it into a data.frame...
d <- as.data.frame(d)
str(d) # numeric

str(m) # still strings...

... но было бы лучше, если бы вы могли избежать сохранениязначения матрицы в виде строк на первом месте!Если вы не загрузили их из файла, не должно быть никаких причин для этого.Если вам удалось получить их как строки из какой-либо другой операции, вам следует оглянуться назад на эту операцию и посмотреть, как можно избежать потери числового режима.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...