Чтение данных в 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
Другие вопросы по тегам