循环遍历数据帧列表以在R中创建图形
我使用xyplot创建了一个晶格散点图,该散点图分为不同的类别。现在,我试图从散点图中为每个类别创建一个单独的六角图。我可以硬编码变量,但我更喜欢在循环中这样做,因为我会多次这样做,这将有新的类别 我从一张这样的桌子开始循环遍历数据帧列表以在R中创建图形,r,loops,ggplot2,plot,R,Loops,Ggplot2,Plot,我使用xyplot创建了一个晶格散点图,该散点图分为不同的类别。现在,我试图从散点图中为每个类别创建一个单独的六角图。我可以硬编码变量,但我更喜欢在循环中这样做,因为我会多次这样做,这将有新的类别 我从一张这样的桌子开始 Name Category Value1 Value2 sample1 cat1 10 1.5 sample2 cat2 10 1.5 sample3 cat3 10 1.5 samp
Name Category Value1 Value2
sample1 cat1 10 1.5
sample2 cat2 10 1.5
sample3 cat3 10 1.5
sample4 cat1 10 1.5
sample5 cat1 10 1.5
sample6 cat2 10 1.5
sample7 cat3 10 1.5
Name Category Value1 Value2
sample1 cat1 10 1.5
sample4 cat1 10 1.5
sample5 cat1 10 1.5
我能够使用
testing <- split(Mydata, Mydata$Category)
我试过了
for(i in testing){
testing3 <- i
xtra <- ggplot(testing3, aes(x = testing3[,3], y = testing3[,4])) + geom_hex(bins = 30)
xtra
}
产生这个
Name Category Value1 Value2
sample1 cat1 10 1.5
sample4 cat1 10 1.5
sample5 cat1 10 1.5
但是当我尝试使用for循环时
for(i in categorynames){###categorynames is a vector that has all my categorynames
myFirstFun(i)
}
它将只生成列表上的最后一个图形。
如何生成n个图形(n=我的类别数)?
不用我手动操作
myFirstFun("cat1")
myFirstFun("cat2")
myFirstFun("cat3")
...
您可以构建一个函数,在该函数中使用
dplyr::filter
选择所需的类别
,然后进行打印
要循环浏览每个类别
,请使用purrr::map
并将所有结果存储在列表中。从那里,您可以打印您选择的绘图,也可以将它们全部合并到一页或多页中
库(tidyverse)
df请使用dput(my_data)
显示一些可复制的数据,很难用给定的信息来判断,但如果这是关于aes()
映射中的变量的问题,这可能是R-FAQ的重复:@Gregor值得注意的是,aes_string
和aes_
都可以工作,但被/已经被弃用,取而代之的是tidyeval可能重复的@Gregor。我现在将代码转换为函数,但我的问题仍然存在,因为我无法循环通过列表创建多个不同的绘图<代码>myFirstFun非常感谢。这解决了我的问题。干杯
Name Category Value1 Value2
sample1 cat1 10 1.5
sample4 cat1 10 1.5
sample5 cat1 10 1.5
for(i in categorynames){###categorynames is a vector that has all my categorynames
myFirstFun(i)
}
myFirstFun("cat1")
myFirstFun("cat2")
myFirstFun("cat3")
...