Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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中创建图形_R_Loops_Ggplot2_Plot - Fatal编程技术网

循环遍历数据帧列表以在R中创建图形

循环遍历数据帧列表以在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

我使用xyplot创建了一个晶格散点图,该散点图分为不同的类别。现在,我试图从散点图中为每个类别创建一个单独的六角图。我可以硬编码变量,但我更喜欢在循环中这样做,因为我会多次这样做,这将有新的类别

我从一张这样的桌子开始

 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")
...