read.table: знак процента (%) и косая черта (/) в заголовках заменены точкой (.)

У меня есть файл csv с заголовками, некоторые из которых содержат знак процента или косую черту, например:

"Exp1_BSL_%LF", "Exp1_BSL_LF/HF".

При импорте этих файлов с read.table(header = TRUE) эти знаки заменяются точками:

"Exp1_BSL_.LF", "Exp1_BSL_LF.HF".

У меня нет опыта работы со строками в R, поэтому я понятия не имею, что вызывает такое поведение.

> read.table(text = "Subject,Exp1_BSL_SDNN,Exp1_BSL_LF/HF,Exp1_BSL_%LF
+ s1,123,123,123
+ s2,123,123,123", sep=",", header=TRUE)

Subject Exp1_BSL_SDNN Exp1_BSL_LF.HF Exp1_BSL_.LF
1      s1           123            123          123
2      s2           123            123          123

person Robn    schedule 30.01.2020    source источник


Ответы (1)


R по умолчанию пытается убедиться, что импортируемый фрейм данных имеет синтаксически допустимые имена, используя check.names, который по умолчанию равен TRUE. Он не допускает имена столбцов с такими символами, как %, / (или другими, как определено в make.names).

Однако мы можем переопределить это поведение, используя check.names = FALSE

read.table(text = "Subject,Exp1_BSL_SDNN,Exp1_BSL_LF/HF,Exp1_BSL_%LF
   s1,123,123,123
   s2,123,123,123", sep=",", header=TRUE, check.names = FALSE)

#  Subject Exp1_BSL_SDNN Exp1_BSL_LF/HF Exp1_BSL_%LF
#1      s1           123            123          123
#2      s2           123            123          123
person Ronak Shah    schedule 30.01.2020