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

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

"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

1 Ответ

4 голосов
/ 30 января 2020

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
...