Read.table читает "T" как TRUE и "F" как ЛОЖЬ, как этого избежать?
У меня есть файл с данными c("A","T","B","F").
Когда я использую:
read.csv(myfile,header=F,stringsAsFactors=F)
R интерпретирует символ T как TRUE и F как FALSE
Я делаю что-то неправильно?
Ответ 1
Если все ваши столбцы являются символами, попробуйте следующее:
# replace text = . with your filename
read.csv(text="A,B,T,T", header=FALSE, stringsAsFactors=FALSE,
colClasses = c("character"))
В противном случае вам нужно передать тип каждого столбца в colClasses как: colClasses = c("numeric", "numeric", "character", ...)
Ответ 2
Я столкнулся с подобной проблемой, вот решение:
#dummy data
df <- read.csv(text="
A,B,T,T,F
T,T,F,T,text1
A,T,NA,F,T",
header=FALSE, stringsAsFactors=FALSE)
#data
df
# V1 V2 V3 V4 V5
# 1 A B TRUE TRUE F
# 2 T T FALSE TRUE text1
# 3 A T NA FALSE T
#convert logical columns to single letters
df[,sapply(df,class) == "logical"] <-
sapply(df[,sapply(df,class) == "logical"],
function(i) substr(as.character(i),1,1))
#result
df
# V1 V2 V3 V4 V5
# 1 A B T T F
# 2 T T F T text1
# 3 A T <NA> F T
Ответ 3
Если вы не хотите изменять класс всех столбцов, также работает revalue, но лучше сделать простой переход к одному столбцу.