R:为数据框中的每一行创建子图

R: Create suplots for each row in dataframe

我有以下数据框:

V1 V2 V3 V4 V5
A  0  3  1  0
R  4  2  0  0
Q  0  2  4  0

V1 是标识符,剩余列类似于实际数据。

我想为这个数据框中的每一行创建条形图。我尝试使用 melt 重塑为长格式并对问题进行矢量化,但没有成功。有没有不需要写函数的方法?

编辑: 这是我最后想看到的(只是原理布局):

https://plot.ly/~MattSundquist/11035.png

这是你想要的吗:

d<-data.frame(V1=c('A','R','Q'),V2=c(0,4,0),
               V3=c(3,2,2),V4=c(1,0,4),V5=c(0,0,0))
rownames(d)<-d[,1]
barplot(t(as.matrix(d[,-1])),beside=T) # barplots for group A, R, Q.

我只做了一个专栏,但你明白我的想法:

df = data.frame(v1 = c('A', 'R', 'Q'), v2 = c(0,4,0))
dat1 = split(df, df$v1)
str(dat1)
lapply(dat1, FUN=function(x) ggplot(data=x, aes(v1, v2)) + geom_bar(stat="identity"))

这样做怎么样?

library(tidyr)
library(dplyr)

df_n <- gather(df, key = V1)
names(df_n) <- letters[1:3]
ggplot(df_n, aes(a, c, fill=b)) + geom_bar(position="dodge", stat="identity")

编辑版本:

使用分面:

ggplot(df_n, aes(a, c, fill=b)) + geom_bar(position="dodge", stat="identity") + facet_grid(.~a, scales = "free")