#r #whitespace #delimiter #read.table
#r #пробелы #разделитель #read.table
Вопрос:
У меня есть файл с разделителями табуляции, в котором некоторые столбцы содержат 1 или более символов пробела, то есть пробелы, кроме разделителей (табуляция), которые мне нужно сохранить. Например, файл может быть сгенерирован с помощью команды оболочки bash:
echo -e " t*t t*t*t t*" > test.tab
затем я прочитал файл в R
f=read.table("test.tab", header=FALSE, sep="t", strip.white=FALSE, na.strings='');
f
V1 V2 V3 V4 V5 V6 V7
1 NA * NA * * NA *
s=as.character(f)
s
[1] "NA" "*" "NA" "*" "*" "NA" "*"
На самом деле я хотел, чтобы s было «spacestarspacespacestarstarspacestar», а не NA в строке.
Я также попробовал формат, разделенный запятыми, но получил те же результаты.
echo -e " ,*, ,*,*, ,*" > test1.csv # or
echo -e "' ',*,' ',*,*, ,*" > test2.csv
f=read.table("test1.csv", header=FALSE, sep=",", strip.white=FALSE, na.strings='');
f
V1 V2 V3 V4 V5 V6 V7
1 NA * NA * * NA *
as.character(f)
[1] «NA» «» «NA» «» «» «NA» «»
f=read.table(«test2.csv», заголовок = FALSE, sep=»,», strip.white=FALSE, na.strings=»);
как символ (f)
«NA» «» «NA» «» «» «NA» ««
Как получить символы пробела? TIA
Комментарии:
1. Я не вижу тех же результатов. Сообщение
-e
отправляется в файл «test.tab». И также непонятно, почему вы считаете, что в результате должны быть символы табуляции, поскольку вы указали, что табуляции являются разделителями. Разделители не должны оставаться после ввода в R фреймов данных.2. Я отредактировал свой вопрос. я хотел, чтобы s было «spacestarspacespacestarstarspacestar»
Ответ №1:
Это потому, что он не читается в этих столбцах как символы
read.table('test.tab', sep = 't', colClasses = 'character')
будет правильно считываться в пробелах.
Комментарии:
1. Это то, что мне нужно. Спасибо!