У меня есть файл excel с несколькими листами, каждый с несколькими столбцами, поэтому я бы хотел не указывать тип столбца отдельно, а автоматически. Я хочу прочитать их как stringsAsFactors= FALSE
, потому что он правильно интерпретирует тип столбца. В моем текущем методе ширина столбца "0,492 ± 0,6" интерпретируется как число, возвращающая NA ", потому что" опция stringsAsFactors
недоступна в read_excel
. Итак, я пишу обходной путь, который работает более или менее хорошо, но я не могу использовать его в реальной жизни, потому что мне не разрешено создавать новый файл. Примечание. Мне нужны другие столбцы как числа или целые числа, а также другие, которые имеют только текст в качестве символов, как stringsAsFactors
в моем примере read.csv
.
library(readxl)
file= "myfile.xlsx"
firstread<-read_excel(file, sheet = "mysheet", col_names = TRUE, na = "", skip = 0)
#firstread has the problem of the a column with "0.492 ± 0.6",
#being interpreted as number (returns NA)
colna<-colnames(firstread)
# read every column as character
colnumt<-ncol(firstread)
textcol<-rep("text", colnumt)
secondreadchar<-read_excel(file, sheet = "mysheet", col_names = TRUE,
col_types = textcol, na = "", skip = 0)
# another column, with the number 0.532, is now 0.5319999999999999
# and several other similar cases.
# read again with stringsAsFactors
# critical step, in real life, I "cannot" write a csv file.
write.csv(secondreadchar, "allcharac.txt", row.names = FALSE)
stringsasfactor<-read.csv("allcharac.txt", stringsAsFactors = FALSE)
colnames(stringsasfactor)<-colna
# column with "0.492 ± 0.6" now is character, as desired, others numeric as desired as well