Подтвердить что ты не робот

R-пакетная функция изменения температуры расплава: переменные id не найдены в данных при работе с множеством факторов

Я работаю с выводом разрежения mothur, который в основном дает мне набор данных, содержащий количество выборок последовательностей и количество уникальные последовательности в нескольких образцах. Я хотел бы использовать ggplot2 для визуализации этих данных и поэтому должен использовать melt для перехода от формата wide в long.

Проблема заключается в том, что я не нашел способа сделать эту работу из-за ошибки melt. Что в основном утверждает

Ошибка: переменные id, не найденные в данных: 1,3,6, (... и т.д.)

Из-за размера исходного набора данных было бы нецелесообразно делиться им здесь, тем не менее нужно иметь возможность воссоздать ту же проблему, используя следующий код:

a<-seq(0,300,3)
b<-runif(length(a))
c<-runif(length(a))
d<-as.data.frame(cbind(a,b,c))
d$a<-as.factor(d$a)
melt(d,d$a)

Что дает точно такую ​​же ошибку:

Ошибка: переменные id, не найденные в данных: 0,3,6,9, (...)

Я не вижу, что я делаю неправильно. Я использую R 2.15.1 на сервере ubuntu 12.04. Обе функции reshape::melt и reshape2::melt приводят к той же ошибке.

4b9b3361

Ответ 1

Вы должны использовать:

melt(d, id.vars="a")
      a variable       value
1     0        b 0.019199459
2     3        b 0.693699677
3     6        b 0.937592641
4     9        b 0.299259963
5    12        b 0.485403439
...

С помощью ?melt.data.frame:

данные
структура данных для плавления

id.vars
вектор переменных id. Может быть целым (переменная позиция) или string (имя переменной) Если пустым, будут использоваться все неизмеримые переменные

Таким образом, ваш аргумент id.vars должен быть символьным вектором имен, например. "a" или числовой вектор, например. 1. Длина этого вектора должна равняться количеству столбцов, которые вы хотите в качестве вашего идентификатора.

Вместо этого вы использовали фактор, который содержит гораздо больше элементов, чем столбцы в ваших данных.