2016-09-09 3 views
0
medals <- c(rep("United States",121), rep("China",70),rep("Great Britain",67), rep("Russia",56), rep("Germany",42), rep("France",42), rep("Japan",41), rep("Australia",29), rep("Italy",28), rep("Canada",22))  
barplot(medals, names.arg=c("USA", "CHN", "GBR", "RUS", "GER","FRA","JPN","AUS","ITA","CAN"), main = "Top 10 Medal Winning Countries from the Rio 2016 Olympics", xlab = "Countries", ylab="Total Medals Won", cex.names=0.95) 

Эти две строки кода дают эту ошибку «Ошибка в -0.01 * высота: нечисловой аргумент бинарного оператора»Почему эти две простые строки кода в R не работают?

Я пытаюсь использовать R в первый раз

+0

Это на самом деле не нужно повторять каждый ; просто сделайте таблицу подсчетов: 'с (as.data.frame (таблица (медали)), barplot (Freq, names.arg = medals))' или с ggplot: 'ggplot (as.data.frame (таблица (медали)), aes (medals, Freq)) + geom_bar (stat = 'identity') ' – alistaire

+0

Просьба описать то, что вы пытаетесь достичь, а также – YakovL

ответ

1

Обратите внимание, что barplot ожидает численный аргумент height, а не список символов.

попробовать

plot(factor(medals)) 

Это получает вам barplot (когда у вас есть фактор он по умолчанию в barplot и предоставляет нужную информацию). Вы должны иметь возможность манипулировать дальше оттуда.

В самом деле, если вы исследуете, что делает plot.factor (graphics:::plot.factor), он вызывает barplot(table(x),... (где x является фактором аргумент plot.factor) - это еще один возможный путь.

Вы должны изучить/узнать о факторах, они являются важной частью того, как R имеет дело с категориальными переменными. См. ?factor.

Если вы хотите позвонить по телефону barplot, отправьте его с относительной высотой бара (например, подсчеты). Один из способов сделать это было бы

barplot(summary(factor(medals))) 

(или с помощью table, а не summary как уже упоминалось ранее), а затем вы можете установить имена, как вы пытаетесь до того

Смежные вопросы