这似乎应该很容易,但我无法弄清楚.我有一个数据框,其中行名称自动创建为索引编号,如下面的示例所示.
> df
employee salary startdate
1 John Doe 21000 2010-11-01
2 Peter Gynn 23400 2008-03-25
3 Jolie Hope 26800 2007-03-14
Run Code Online (Sandbox Code Playgroud)
我想使用x轴上的行名称来绘制它,但由于它没有名称,我无法弄清楚这一点.有人能指出我正确的方向吗?
我有一个像这一个简单的data.frame:
id group idu value
1 1 1_1 34
2 1 2_1 23
3 1 3_1 67
4 2 4_2 6
5 2 5_2 24
6 2 6_2 45
1 3 1_3 34
2 3 2_3 67
3 3 3_3 76
Run Code Online (Sandbox Code Playgroud)
从我想要检索每个组的第一个条目的子集; 就像是:
id group idu value
1 1 1_1 34
4 2 4_2 6
1 3 1_3 34
Run Code Online (Sandbox Code Playgroud)
id不是唯一的,所以方法不应该依赖它.
我可以实现避免循环吗?
dput() 数据的:
structure(list(id = c(1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L), group = c(1L,
1L, 1L, 2L, …Run Code Online (Sandbox Code Playgroud) 我正在运行一个循环来获取我的数据集的每个子设置,一个地图并相应地应用给定的调色板(和相应的图例).
人们倾向于不喜欢使用for()循环并最大化他们的方法的矢量化.我不知道使用此特定数据集对流程进行矢量化的最佳方法.
在这个特殊情况下,我正在处理一个相对较大的数据集(分布物种Atlas),因为使用了不同的方法,并且每个物种必须通过不同的选项,考虑到特定的季节,不同的观察结果等,因此特别复杂.物种可能在一个季节出现而错过另一个季节(它们可能是饲养员,居民或移民).应为所有情况(季节)创建地图,不存在时为空.可以使用和使用附加数据(除了来自现场工作的数据).除了在自定义离散比例中显示感兴趣的变量(丰度)之外,地图图例必须适应所有变化.
通过运行循环,我觉得(根据我有限的专业知识)我可以更容易地保留和控制所需的几个对象,同时踩入我创建的通量以产生感兴趣的碎片,最后创建物种分布图集.
我的问题是我将每个结果ggplot存储在list()对象中.每个季节的每个物种都将存储在一个清单中.我现在面临的问题是相关scale_fill_manual使用时 里面一环.
这种行为很奇怪,因为我完成了地图,但颜色只应用于最后一个ggplot输出.尽管如此,仍然可以在图例中正确识别所有值.
举例说明:
if (!require(ggplot2)) install.packages("ggplot2",
repos = "http://cran.r-project.org"); library(ggplot2)
if (!require(grid)) install.packages("grid",
repos = "http://cran.r-project.org"); library(grid)
if (!require(RColorBrewer)) install.packages("RColorBrewer",
repos = "http://cran.r-project.org"); library(RColorBrewer)
if (!require(reshape)) install.packages("reshape",
repos = "http://cran.r-project.org"); library(reshape)
Run Code Online (Sandbox Code Playgroud)
#Create a list of colors to be used with scale_manual
palette.l <- list()
palette.l[[1]] <- c('red', 'blue', 'green')
palette.l[[2]] <- c('pink', 'blue', 'yellow')
# Store each ggplot in a list object
plot.l <- list()
#Loop it …Run Code Online (Sandbox Code Playgroud)