Чтение данных в R
Я пытаюсь прочитать данные из базы данных msigdb в мою среду R, но у меня возникают проблемы при чтении в нужный мне формат. Прямо сейчас, когда я читаю данные в них, которые читаются как тип "целое число", я хочу, чтобы они читались как тип "символ" или любой другой тип, чтобы при передаче данных между фреймами / матрицами данных я не получал целочисленное значение. для предмета вместо письменных букв, составляющих название предмета.
df<-read.table("msigdb.v5.2.symbols.txt", fill = TRUE)
Это то, что у меня сейчас есть, но, как я уже сказал, когда делаю typeof(df[1,1])
я получил "integer"
,
Подводя итог: после чтения данных со столбцами, которые должны быть символьными, текущее поведение: typeof(df[1,1)]
производит "integer"
, Желаемое поведение: typeof(df[1,1]]
производит "character"
Воспроизводимый пример:
library(dplyr)
write.table(band_instruments, "test.txt")
df <- read.table("test.txt", header = TRUE)
typeof(df[1,1])
# [1] "integer"
Спасибо!
1 ответ
df<-read.table("msigdb.v5.2.symbols.txt", fill = TRUE, stringsAsFactors = FALSE)
По умолчанию, read.table
читает все столбцы как character
если не указано иное в colClasses
*, а также read.table
а также data.frame
конвертировать символы в факторы. Когда вы извлекаете одну ячейку фактора, она будет отображаться как внутренний целочисленный код.
настройка stringsAsFactors = FALSE
в призыве к read.table
решает это.
* несмотря на комментарий ниже, это правда. read.table
сначала читает все столбцы как символы, а затем преобразует их. Это в документации, и вы можете увидеть это из исходного кода. Вы можете подтвердить это с помощью следующего кода:
write.table(mtcars, "mtcars.txt")
read.table("mtcars.txt", header = TRUE, quote = ".")
# Fails because it reads the decimals in the numeric data as quotes
# From the documentation: Quoting is only considered for columns read
# as character, which is all of them unless colClasses is specified