Проблема чтения в строках как факторов; предыдущие пробелы, по-видимому, имеют значение

#r

Вопрос:

Возникли проблемы с чтением в мини-файле textConnection (), в котором есть факторы. Этот фрагмент ниже содержит два отдельных фактора для «LabAuto».

 x lt;- read.table(tc lt;- textConnection( "Project, TestingType, CodeType 'TS', 'TDDEUT', Production 'TS', 'TDDEUT', Testing 'NR', 'LabAuto', Production 'In', 'LabAuto', Testing"),  header=TRUE, colClasses=c("character", "factor", "factor"),  sep=",", na.strings=c("NULL"), quote="'")  

TestingType показывает это, указывая, что есть два уровня, помеченных (приблизительно) ЛабАвто:

 gt; x$TestingType [1] TDDEUT TDDEUT LabAuto LabAuto  Levels: LabAuto LabAuto TDDEUT  

Якобы это связано с дополнительным пробелом перед первым фактором «LabAuto», потому что, если я удалю один пробел (в строке «NR»), то я просто получу два фактора для TestingType, как я хочу:

 gt; x$TestingType [1] TDDEUT TDDEUT LabAuto LabAuto Levels: LabAuto TDDEUT  

Но не должно ли указание параметров sep=»,» и quote=»‘» указывать R рассматривать только текст внутри одинарных кавычек в качестве метки фактора?

Одинарные кавычки не являются исключительно проблемой, так как в третьей колонке выше та же проблема:

 gt; x$CodeType [1] Production Testing Production Testing  Levels: Production Testing Testing Production  

Он показывает 4 разных фактора вместо 2, опять же якобы потому, что перед каждым из них разное количество пробелов. Есть ли способ указать R игнорировать пробелы при создании уровней коэффициентов из текстового входного файла? Спасибо.

Комментарии:

1. От ?read.table вас можно якобы установить strip.white = TRUE .

Ответ №1:

Ваш входной файл имеет очень странный формат. Обычно у вас есть разделитель или пробелы, разделяющие значения. У вас, кажется, есть и то, и другое, что странно. Но вы можете убрать пробел, если используете strip.white= параметр to read.table . Use

 x lt;- read.table(tc lt;- textConnection(  "Project, TestingType, CodeType 'TS', 'TDDEUT', Production 'TS', 'TDDEUT', Testing 'NR', 'LabAuto', Production 'In', 'LabAuto', Testing"),  header=TRUE, colClasses=c("character", "factor", "factor"),  sep=",", na.strings=c("NULL"), quote="'", strip.white = TRUE)  x$TestingType # [1] TDDEUT TDDEUT LabAuto LabAuto # Levels: LabAuto TDDEUT  

Комментарии:

1. полоска.белый был ответом. Спасибо! Данные отформатированы таким образом, потому что я иногда редактирую их вручную. Помогает выстроить столбцы в ряд. Строки или факторы могут содержать встроенные пробелы.