длина 'at' и 'labels' различается, ошибка 13 != 10 в R

У меня есть кадр данных, df, который выглядит так:

      a   b   c   d   e   f   g    h     i    j   k   l    m
1a    4   4   3   4   3   4   3   4.0   4.0   4   4   4   3.9
1b    9   9   9   9   9   9   9   8.1   8.8   9   9   9   8.5
1c    8   8   9   8   9   8   8   8.0   9.0   8   9   8   8.3
1d    8   8   8   9   8   9   8   8.0   8.0   8   8   8   8.5
1e    4   4   4   4   4   4   4   4.0   4.0   4   4   4   4.0
2a    3   4   3   4   3   4   3   4.0   3.0   4   3   4   3.8
2b    8   8   8   8   8   8   8   8.0   8.0   8   8   8   8.0
2c    8   8   8   8   8   8   8   9.0   8.0   9   8   8   8.3
2d    8   9   8   8   8   9   8   9.0   8.0   9   8   9   8.0
2e    4   3   4   3   4   4   4   4.0   4.0   4   4   3   3.9

Я использую пакеты plotrix и devtools и уже установил их оба, а также функцию barp2 следующим образом:

# install the packages and load the barp2 function
install.packages('plotrix')
install.packages('devtools')
install_url("http://cran.r-project.org/src/contrib/Archive/plotrix/plotrix_3.5-2.tar.gz")
source_gist("https://gist.github.com/tleja/8592929")

# load the packages
library(plotrix)
library(devtools)

Модифицированный код (barp2), который я использую, доступен здесь.

Я пытаюсь построить данные во фрейме данных, указанном выше, вот так:

par(mar = c(5, 4, 4, 6))
barp2(df, pch=t(c(0:4, 7:14)), names.arg=rownames(df), legend.lab=colnames(df),
    ylab="y label", main="main")

Я использую справочную диаграмму, чтобы заполнить столбцы графика.

Я хочу, чтобы имена строк df были метками оси x, а имена столбцов df были в легенде.

Тем не менее, я продолжаю получать эту ошибку:

Error in axis(1, at = x, labels = names.arg, cex.axis = cex.axis) : 
    'at' and 'labels' lengths differ, 13 != 10

Я понимаю, что это из-за того, что rownames(df) имеет длину 10, а colnames(df) имеет длину 13 (которые явно не равны), но я не уверен, как исправить эту проблему, чтобы данные в фрейме данных отображались в виде барплот.

Или, если я поменяю местами столбцы и строки, используя t(df), вот так:

barp2(t(df), pch=t(c(0:4, 7:11)), names.arg=rownames(df), legend.lab=colnames(df),
ylab="y label", main="main")

Я получаю эту ошибку:

Error in seq.default(x1[frect] + xinc[frect]/2, x2[frect] - xinc[frect]/2,  : 
    wrong sign in 'by' argument

Я понятия не имею, что означает эта ошибка и почему я ее получаю.

Извините, я не могу предоставить изображение того, как это должно выглядеть, но, надеюсь, вы получите общее представление об этом.

Любая помощь приветствуется.


person Warrior    schedule 29.01.2014    source источник
comment
t() в аргументе pch просто выглядит неправильно.   -  person IRTFM    schedule 30.01.2014
comment
@IShouldBuyABoat - Даже если я удалю t() на pch, я все равно получу ту же ошибку. Я включил t(), потому что данные должны быть предоставлены в матричном формате для указания различных символов. Столбцы матрицы должны соответствовать последовательности pch параметров. Как кто-то сказал на этой странице .   -  person Warrior    schedule 30.01.2014