R 使用某些数据帧进行不同的打印
我有一个数据帧列表保存为df.list。对于一些数据帧,我想绘制geom_线和geom_点(df.1),但对于一些数据帧,我只想要geom_线(df.2,df.3)。有没有一种有效的方法可以做到这一点?我正在使用mapply()进行绘图,并且可以使用mapply()两次获得我想要的结果,但是我想要一个使用单个mapply()的解决方案 下面给出的示例中,我尝试了子集设置,但仍然只给出了仅使用线条的绘图,但我尝试使用线条和点绘制df.1,而使用线条绘制df.2/df.3 我尝试过在geom_point中进行子集设置,但看起来您只能在数据帧中进行子集设置,而不能在数据帧列表中进行子集设置 我也尝试过使用ifelse,但是只有第一个元素将用于条件语句,我不想使用循环和映射R 使用某些数据帧进行不同的打印,r,ggplot2,R,Ggplot2,我有一个数据帧列表保存为df.list。对于一些数据帧,我想绘制geom_线和geom_点(df.1),但对于一些数据帧,我只想要geom_线(df.2,df.3)。有没有一种有效的方法可以做到这一点?我正在使用mapply()进行绘图,并且可以使用mapply()两次获得我想要的结果,但是我想要一个使用单个mapply()的解决方案 下面给出的示例中,我尝试了子集设置,但仍然只给出了仅使用线条的绘图,但我尝试使用线条和点绘制df.1,而使用线条绘制df.2/df.3 我尝试过在geom_poi
df.1 <- iris[1:50,]
df.2 <- iris[51:100,]
df.3 <- iris[101:150,]
df.list <- list(df.1, df.2, df.3)
df.names <- c("df.1", "df.2", "df.3")
names(df.list) <- df.names; list2env(df.list, .GlobalEnv)
name.y <- c("1", "2", "3")
name.x <- c("df.1")
mapply(function(x, k) {
ggplot(x, aes(Sepal.Width, Petal.Length, colour = Species)) +
labs(y = k) + geom_line() + geom_point(data = subset(x, is.element(names(x), name.x)))
}, SIMPLIFY = FALSE, x = df.list, k = name.y)
df.1最有可能的情况是直接使用data.frames列表,它可能会起作用。。希望这就是你打算做的:
df.list <- list(df.1, df.2, df.3)
df.names <- c("df.1", "df.2", "df.3")
names(df.list) <- df.names; list2env(df.list, .GlobalEnv)
plt = function(x,k){
g = ggplot(x, aes(Sepal.Width, Petal.Length, colour = Species)) +
labs(y = k) + geom_line()
if(k=="1"){
g = g + geom_point()
}
return(g)
}
library(patchwork)
P = mapply(plt, SIMPLIFY = FALSE, x = df.list, name.y)
wrap_plots(P)
df.list这正是我要找的!谢谢