У вас есть проблемы очистки данных. Вот мое решение для вас.
Я скопировал и вставил ваш файл «TXT» в пустой документ TextEdit на Mac и сохранил его как file.txt
. Порядок, указанный в вашем файле TXT, не требуется:
data <- unlist(read.table("file.txt", header=F, sep="\t", stringsAsFactors=F), use.names=F)
data
sample_names <- data[grep("sample", data), drop=T]
sample_names
## [1] "sample1" "sample2" "sample3"
color <- data[grep("color", data), drop=T]
color
## "color 12" "color 15" "color 34"
length <- data[grep("length", data), drop=T]
length #note missing term, and requires manual coding
## [1] "length 34" "length 20"
length <- c(length, NA)
length
## [1] "length 34" "length 20" NA
validity <- data[grep("validity", data), drop=T]
validity
## [1] "validity 90" "validity 120" "validity 79"
## Assemble into data.frame:
assembled_df <- rbind(color, length, validity)
colnames(assembled_df) <- sample_names #update column names
assembled_df
## sample1 sample2 sample3
## color "color 12" "color 15" "color 34"
## length "length 34" "length 20" NA
## validity "validity 90" "validity 120" "validity 79"
Обратите внимание, что код не может быть обобщен. Речь идет о том, как будет выглядеть фактический файл TXT. Важно научиться: 1) знать свои данные (что вы делаете), 2) разработать стратегию, 3), а затем решение.
Пожалуйста, предоставьте 'dput' ваших данных. –
@DavidArenburg У меня нет объекта R. У меня есть только файл .txt, который я хочу прочитать в R. – Yan
Получил его. Попробуйте 'library (data.table); dcast (fread ("test.txt", fill = TRUE) [! is.na (V2)], sample1 ~ paste0 ("sample_", rowid (sample1))) 'возможно. –