Просто избегайте использовать цикл for
. Как насчет lapply
:
g <- g + lapply(2:ncol(df), function(p) {
geom_violin(aes(y = df[,p], colour = place[p-1]), alpha = 0.3)
})
EDIT: Это действительно не работает. У меня был p <- 2
в моей рабочей области, прежде чем запускать его, а затем он создал график только с данными Чикаго. Во всяком случае, принцип должен по-прежнему работать (хотя melt
, вероятно, лучший вариант):
g <- ggplot(df, aes(x=factor(topic)))
g + lapply(place, function(p) {
geom_violin(aes_string(y = p), alpha = 0.3, color = which(p==place))
})