Я хочу импортировать текстовый файл, который содержит таблицу результатов с двумя строками заголовка над ним. Содержимое строк заголовка должно быть включено как дополнительные столбцы в результирующий data.frame.
В следующем текстовом файле примера строки Region и Month являются строками заголовка, а оставшаяся часть файла - таблица результатов.
Region South Africa
Month July
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
должен стать data.frame, который включает столбцы для Region и Month:
wanted.df<-structure(list(Sepal.Length = c(1, 2, 3), Sepal.Width = c(5.1,
4.9, 4.7), Petal.Length = c(3.5, 3, 3.2), Petal.Width = c(1.4,
1.4, 1.3), Species = c(0.2, 0.2, 0.2), Region = c("South Africa",
"South Africa", "South Africa"), Month = c("July", "July", "July"
)), row.names = c(NA, -3L), class = c("spec_tbl_df", "tbl_df",
"tbl", "data.frame"))
Мне удалось сделать это, создав два data.frames, один из которых содержит информация заголовка, вторая содержит таблицу результатов, а затем объединяет их, но это кажется мне немного неуклюжим:
#Create data frame from first two lines of text (the header)
header <- scan('example.txt', nlines = 2, what = character(),sep = "\n")
header.df<-data.frame((sapply(header,function(x){str_split(x, "\t")})),stringsAsFactors=FALSE)
colnames(header.df) <- as.character(header.df[1,])
header.df<-header.df[-1,]
#Create data frame from first remainder of the file which contains the results table
results.df<-read_tsv('example.txt',col_names = T,skip=2)
#helper column added to both data frames for merging
results.df$helper.col<- "match"
header.df$helper.col<-"match"
df.example<-inner_join(results.df,header.df, by = "helper.col", copy = FALSE)
wanted.df<-select(df.example,-helper.col)
Есть ли более элегантный способ?