Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:ggplot2并使用data.table循环_R_Loops_Ggplot2_Data.table - Fatal编程技术网

R:ggplot2并使用data.table循环

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功能

我必须绘制4个图,它们只在
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
}