R 使用mappy和ggplot

R 使用mappy和ggplot,r,ggplot2,R,Ggplot2,继续我对函数和ggplot的探索: 我总结了如何使用lappy和ggplot在y_列列表中循环生成一些单独的绘图的基本方法: require(ggplot2) # using lapply with ggplot df <- data.frame(x=c("a", "b", "c"), col1=c(1, 2, 3), col2=c(3, 2, 1), col3=c(4, 2, 3)) cols <- colnames(d

继续我对函数和ggplot的探索:

我总结了如何使用lappy和ggplot在y_列列表中循环生成一些单独的绘图的基本方法:

require(ggplot2)
# using lapply with ggplot

df <- data.frame(x=c("a", "b", "c"), col1=c(1, 2, 3), col2=c(3, 2, 1), col3=c(4, 2, 3))
cols <- colnames(df[2:4])
myplots <- vector('list', 3)

plot_function <- function(y_column, data) { 
     ggplot(data, aes_string(x="x", y=y_column, fill = "x")) +
     geom_col() + 
     labs(title=paste("lapply:", y_column))
}

myplots <- lapply(cols, plot_function, df)
myplots[[3]])

我们可能需要在此处使用行方式

out <- lapply(asplit(combo, 1), function(x)
           multi_plot_function(x[1], x[2], df))
-测试

out2[[1]]

你是什么意思?在你的手中,代码是否为mapply版本提供了与我不同的绘图?或者它与我的lappy函数相同(即分别显示a、b、c的值4、2、3)?对不起,我刚才只是在看代码问题。感谢您提供这两种解决方案。很高兴了解
asplit
选项(它似乎比使用mapply更简单),同时也感谢您发现了这个bug。现在,不理解传递内容的确切性质是我的首要编码问题。@MarioNiepel我认为它是基于
expand.grid
的,出于某种原因,默认情况下,它将
stringsAsFactors
返回为TRUEYes,这经常是我的问题。在这里,我没有捕捉到它,因为当我检查这个问题时,我只是打印了值,这并没有告诉我它是否是正确的类型。我越来越意识到这一点,但这是一个学习的过程。就像我花了一生的时间才明白我必须先将df打包成一个列表一样:D@MarioNiepel通常,在做任何事情之前,我都会先做str,因为它会发出重要的信号,这很有意义。我需要了解“看到价值”不如理解类型/类别重要。
out2 <- mapply(multi_plot_function, as.character(combo[[1]]), 
    as.character(combo[[2]]), MoreArgs = list(df), SIMPLIFY = FALSE) 
out2[[1]]