我有这个数据框
names var1 var2 var3 var4 ... var51
name1 33.87 31.52 18.73 13.71 ... 0.17
name2 36.18 25.07 19.85 16.33 ... 0.21
name3 34.29 22.68 20.37 12.09 ... 0.36
... ... ... ... ... ... ...
name19 46.98 20.42 14.54 15.77 ... 0.18
我需要使用R逐行绘制一个新的barplot。
我尝试了这个:
for (i in df$names)
barplot(height = df[names == i,],
beside = TRUE,
main = i,
ylim = c(0,100),
names = colnames(df[,c(2:53)]),
las = 1,
col = "lightblue")
但是我得到这个错误:
Error in barplot.default(height = df[names == i,], beside = TRUE, main = p[1, 1], ylim = c(0, :
'height' must be a vector or a matrix
过滤器(df [names == i])看起来不错,但我不知道我在做什么错...
如错误消息所示,barplot
想要一个matrix
。
op <- par(mfrow=c(1, 3)) ## set par
for (i in dat$names) {
barplot(height = as.matrix(dat[dat$names == i,-1]),
beside = TRUE,
main = i,
ylim = c(0,100),
# names = colnames(dat[,-1]),
las = 1,
col = "lightblue")
}
par(op) ## reset par
没有for
循环,您可以使用by
:
op <- par(mfrow=c(1, 3)) ## set par
by(dat, dat$names, function(x)
barplot(as.matrix(x[-1]), beside=TRUE, ylim=c(0, 100), las=1,
col="lightblue", main=x[1]
))
par(op) ## reset par
数据
dat <- read.table(text="names var1 var2 var3 var4 var51
name1 33.87 31.52 18.73 13.71 0.17
name2 36.18 25.07 19.85 16.33 0.21
name3 34.29 22.68 20.37 12.09 0.36", header=TRUE)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句