我使用xyplot创建了一个分组的格子散点图。现在我正在尝试为散点图中的每个类别创建单独的六边形散点图。我可以硬编码变量,但是我更愿意使用循环来做这件事,因为我将多次执行此操作,并且会有新的类别。
我从一个表格开始,它长这样:
这导致xtra成为列表中的最后一个数据框。
有人能帮忙吗?我想能够创建图表,而不必每次都更改$Category,因为我有50个以上的类别需要这样做。
-- 编辑1 根据建议,我创建了一个函数;
但是当我尝试使用for循环时;
它只会生成列表中的最后一个图表。 我如何才能生成n个图表(其中n =我的类别数)?而不需要我手动执行。
我从一个表格开始,它长这样:
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
我能够使用以下方法创建数据帧列表:
testing <- split(Mydata, Mydata$Category)
那么我可以通过以下方式创建一个图表:
testing2 <- as.data.frame(testing[["cat1"]]) #I keep on needing to change this for each Category that I have
ggplot(testing2, aes(x = testing2[,3], y = testing2[,4])) +
geom_hex(bins = 30)
测试2的外观如下所示
Name Category Value1 Value2
sample1 cat1 10 1.5
sample4 cat1 10 1.5
sample5 cat1 10 1.5
我尝试过
for(i in testing){
testing3 <- i
xtra <- ggplot(testing3, aes(x = testing3[,3], y = testing3[,4])) + geom_hex(bins = 30)
xtra
}
这导致xtra成为列表中的最后一个数据框。
有人能帮忙吗?我想能够创建图表,而不必每次都更改$Category,因为我有50个以上的类别需要这样做。
-- 编辑1 根据建议,我创建了一个函数;
myFirstFun <- function(column)
{
testing2 <- as.data.frame(testing[[column]])
column <- enquo(column)
ggplot(testing2, aes_string(x ="Value1", y = "Value2", group = column)) +
geom_hex(bins = 30)
}
还有这个;
myFirstFun("cat1")
产生这个结果;
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")
...
dput(my_data)
显示一些可重现的数据。 - Romanaes()
映射中变量的问题,那么这可能是R-FAQ的重复问题:https://dev59.com/mWEh5IYBdhLWcg3whT3T - Gregor Thomasaes_string
和aes_
都可以使用,但已经被弃用,建议使用tidyeval。 - camillemyFirstFun <- function(column) { testing2 <- as.data.frame(testing[[column]]) column <- enquo(column) ggplot(testing2, aes_string(x ="Value1", y = "Value2", group = column)) + geom_hex(bins = 30) }
我可以创建一个图形,但是当我尝试使用for(i in categorynames){ myFirstFun(i) }
进行循环时,我仍然只能绘制列表中最后一个类别。categorynames是一个包含所有类别名称的向量。 - Juan Paolo Sicat