Следуя вашему довольно короткому описанию и данному сообщению об ошибке, я предполагаю, что ваша проблема заключается в том, что вы вызываете factor
на весь фрейм данных data
.
Обратите внимание, что коэффициент всегда соответствует переменной . Как вы сказали, у вас есть две переменные в кадре данных, давайте попробуем следующий пример:
> myDataFrame <- data.frame(x = c(1,2,2,2,1,2,2,1), y = 1:8)
> factor(myDataFrame)
Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?
Если вы хотите, чтобы вычислить коэффициент для первой переменной, а затем выполнить следующие вместо:
> myFactor <- factor(myDataFrame$x) # or factor(myDataFrame[,1])
затем вы можете использовать myFactor
отсортировать фрейм данных следующим образом:
> myDataFrame[order(myFactor),]
x y
1 1 1
5 1 5
8 1 8
2 2 2
3 2 3
4 2 4
6 2 6
7 2 7
Наконец, обратите внимание, что на самом деле никакой необходимости фактор здесь. Поскольку ваша переменная уже является числовой, вы можете использовать ее непосредственно, как в
> myDataFrame[order(myDataFrame$x),]
, который даст тот же результат.
никто не сможет вам помочь, если вы не предоставите воспроизводимый пример ваших данных. Потратьте время, чтобы сделать один, это того стоит. инструкции: http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – rmuc8
@ r.496 Подумайте о том, чтобы принять ответ, если он решил ваш вопрос. – fotNelton