Mam plik z danymi c("A","T","B","F")
.read.table czyta "T" jako PRAWDA i "F" jako FALSE, jak uniknąć?
Gdy używam:
read.csv(myfile,header=F,stringsAsFactors=F)
R interpretuje charakter T
jako TRUE
i F
jako FALSE
robię coś złego?
Mam plik z danymi c("A","T","B","F")
.read.table czyta "T" jako PRAWDA i "F" jako FALSE, jak uniknąć?
Gdy używam:
read.csv(myfile,header=F,stringsAsFactors=F)
R interpretuje charakter T
jako TRUE
i F
jako FALSE
robię coś złego?
Jeśli wszystkie kolumny są znaki następnie spróbuj tego:
# replace text = . with your filename
read.csv(text="A,B,T,T", header=FALSE, stringsAsFactors=FALSE,
colClasses = c("character"))
Else, będziesz musiał przejść typ każdej kolumny w colClasses
jak: colClasses = c("numeric", "numeric", "character", ...)
dzięki za szybką odpowiedź – nopeva
Przyjechałem tu w poprzek do podobnego problemu to rozwiązanie:
#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
Jeśli nie chcesz zmieniać klasy wszystkich kolumn, również warto dokonać ponownej oceny, ale lepiej jest zrobić prostą literę do jednej kolumny.
df$V3 <- as.factor(revalue(df$V3, c("TRUE" = "T", "FALSE" = "F")))
Błąd w is.factor (x): nie można znaleźć funkcji "revalue" ===> library ("plyr") –
ponadto potrzebowałem "... <- as.factor (revalue) (as.character (df $ V3), c (.... " –
Nie, po prostu wpadam na jeden z dobrze znanych butów :-). Wszyscy genetyści biorą w tym udział podczas sekwencjonowania genów! –