Tienanh Nguyen
Tienanh Nguyen

Reputation: 211

Why are these 2 simple lines of code in R not working?

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)

These two lines of code are giving this error "Error in -0.01 * height : non-numeric argument to binary operator"

I'm trying to use R the first time

Upvotes: 0

Views: 171

Answers (1)

Glen_b
Glen_b

Reputation: 8252

Note that barplot expects a numerical height argument, not a list of characters.

try

plot(factor(medals))

That gets you a barplot (once you have a factor it defaults to a barplot and supplies the right information). You should be able to manipulate further from there.

In fact if you investigate what plot.factor does (graphics:::plot.factor), it calls barplot(table(x),... (where x is the factor argument to plot.factor) - that's another possible avenue.

You should investigate/learn about factors, they're an important part of how R deals with categorical variables. See ?factor.

If you want to call barplot directly, you supply it with relative bar heights (i.e. the counts). One way to do that would be

barplot(summary(factor(medals)))

(or by using table rather than summary as mentioned earlier), and then you can set the names as you were trying to before

Upvotes: 1

Related Questions