R:ggplot2并使用data.table循环
我必须绘制4个图,它们只在R:ggplot2并使用data.table循环,r,loops,ggplot2,data.table,R,Loops,Ggplot2,Data.table,我必须绘制4个图,它们只在y和ylab上有所不同。 我从一个data.tabledt开始,它是 set.seed(123) dt <- data.table(a = rnorm(20), b = rnorm(20), c = rnorm(20), d = rnorm(20), e = rnorm(20)) 然后,绘图将从提供给multiplot功能
y
和ylab
上有所不同。
我从一个data.table
dt
开始,它是
set.seed(123)
dt <- data.table(a = rnorm(20),
b = rnorm(20),
c = rnorm(20),
d = rnorm(20),
e = rnorm(20))
然后,绘图
将从提供给multiplot
功能
但是,我的循环
无法正常工作,因为它无法计算中值和mad值。
您有什么建议可以让代码正常工作吗?#data.table中的中位数+-h*mad值
# data.table with the median +- h* mad values
hline.values <- dt[, lapply(.SD, function(x) median(x) + h * mad(x)),
.SDcols = ydata]
# new empty list
plots <- list()
for (i in seq_along(ydata)) {
p1 <- ggplot(dt, aes_string(x = seq(1, dt[, .N]), y = ydata[i])) +
geom_point() +
geom_hline(data = hline.values,
aes_string(yintercept = ydata[i])) +
# Axis labels and theme
xlab("Replicate") +
ylab(ylabels[[i]]) +
scale_x_continuous(breaks = seq(1, dt[, .N]))
plots[[i]] <- p1
}
hline.values
# data.table with the median +- h* mad values
hline.values <- dt[, lapply(.SD, function(x) median(x) + h * mad(x)),
.SDcols = ydata]
# new empty list
plots <- list()
for (i in seq_along(ydata)) {
p1 <- ggplot(dt, aes_string(x = seq(1, dt[, .N]), y = ydata[i])) +
geom_point() +
geom_hline(data = hline.values,
aes_string(yintercept = ydata[i])) +
# Axis labels and theme
xlab("Replicate") +
ylab(ylabels[[i]]) +
scale_x_continuous(breaks = seq(1, dt[, .N]))
plots[[i]] <- p1
}