The radarchart package expects data to be in a format whereby each row corresponds to an axis on the chart (or a Label) and each column is a set of scores. An example is the built in data set, skills.

library(radarchart)
skills
##          Label Aimee Andy Rich
## 1 Communicator     6    7    9
## 2 Data Wangler     5    6    7
## 3     Modeller     7    6    3
## 4   Programmer     8    6    4
## 5 Technologist     4    2    5
## 6   Visualizer     6    9    7

In many cases your data will have a column for each axis, and each row is a set of observations. In the skills example we might build up a spreadsheet where each row is a person and each column a skill.

skillsByName
##    Name Communicator Data Wangler Modeller Programmer Technologist
## 1 Aimee            6            5        7          8            4
## 2  Andy            7            6        6          6            2
## 3  Rich            9            7        3          4            5
##   Visualizer
## 1          6
## 2          9
## 3          7

In order to use this data set with radarchart we need to rotate it. This can be done with packages such as tidyr.

library(tidyr)
skillsByLabel <- gather(skillsByName, key=Label, value=Score, -Name) %>%
                   spread(key=Name, value=Score)
skillsByLabel
##          Label Aimee Andy Rich
## 1 Communicator     6    7    9
## 2 Data Wangler     5    6    7
## 3     Modeller     7    6    3
## 4   Programmer     8    6    4
## 5 Technologist     4    2    5
## 6   Visualizer     6    9    7

If you don’t want to have a dependency on tidyr then you can do the same thing using a few lines of base R code.

skillsByLabel <- as.data.frame(t(skillsByName[,-1]))
names(skillsByLabel) <- skillsByName$Name
skillsByLabel <- cbind(Label=row.names(skillsByLabel), skillsByLabel)
row.names(skillsByLabel) <- NULL

This rotated data set is now ready for use with radarchart.

chartJSRadar(scores = skillsByLabel, maxScale = 10)