Ответ 1
Короткий ответ: вы сделали это отлично. У вас просто возникают трудности с чтением и записью файлов. Просматривая свой код:
data<-read.table('Table.txt', header=TRUE,row.names=1,sep='\t')
Вышеприведенная строка отлично читает ваши данные, но row.names=1
сказал ей использовать первый столбец в качестве имен для строк. Итак, теперь ваши идентификаторы SampleID являются именами строк, а не их собственным столбцом. Если вы наберете data
или head(data)
или str(data)
сразу после запуска этой строки, это должно быть ясно. Просто опустите этот аргумент row.names и он будет правильно читать.
data <- data.frame(data)
Вам не нужна эта строка выше, потому что read.table()
создает dataframe. Вы можете видеть это с помощью str(data)
.
data <- data[order(data$Cluster),]
Вышеприведенная строка идеальна.
write.table(data, file = 'OrderedTable.txt', append = TRUE,
quote=FALSE, sep = '\t', na ='NA', dec = '.', row.names = TRUE,
col.names = FALSE)
Здесь вы указали аргумент col.names = FALSE
, поэтому в вашем файле нет имен столбцов. Вам также не нужно/хотите append=TRUE
. Если вы посмотрите на help(write.table)
, вы увидите, что это "имеет значение только в том случае, если файл является символьной строкой". Здесь, похоже, файл записывается без окончания последней строки, что, скорее всего, вызовет жалобы read.table()
.
Числа 1-15 в вашем результате выглядят как номера строк. Вы не объясните, как вы смотрите на полученный файл, поэтому я не могу быть уверен. Вероятно, вы прочитали свой файл таким образом, чтобы он не анализировал row.names и вместо этого показывал номера строк. Если вы убедитесь, что ваш столбец SampleIDs не получает назначение имен строк, вы, вероятно, будете в порядке.