小编Ben*_*nes的帖子

控制ggplot图例中的线条颜色和线条类型

背景

在德国,有16个联邦州,其中10个属于西德,其中6个属于东德.在某些方面,例如某些癌症的死亡率,十个前西方国家和六个前东方国家之间存在持续差异.各组内各州之间也存在差异.

为了显示各州之间的差异,从每个州绘制数据,例如按年份划分的年龄标准化乳腺癌死亡率,可以产生一定的意义.16行的情节并不总是一个不错的选择,我不想打开讨论.有时,权力可以说是必须的.

问题

在情节上区分16条线可能很困难.为此,我通常使用RColorBrewer包中的颜色组合(前十种颜色Set3再加上该调色板的前六种颜色,对应于前十个西部和六个前东部状态)和线型(一种线型为东,一个西.)使用该lattice方案,各州1998 - 2010年年龄标准化乳腺癌死亡率的情节可能如下:

有效的xyplot

这个问题

我想做一个类似的情节使用ggplot,但我还没想出如何组合图例中的颜色和线条类型.到目前为止,我已经走到了这一步:

不满意的ggplot

如果可以在ggplot图例中组合颜色和线条类型,那么如何去做呢?

这是创建数据框和图的代码:

mort3 <- structure(list(State = structure(c(8L, 9L, 11L, 12L, 4L, 2L, 
6L, 13L, 3L, 5L, 7L, 10L, 14L, 15L, 1L, 16L, 8L, 9L, 11L, 12L, 
4L, 2L, 6L, 13L, 3L, 5L, 7L, 10L, 14L, 15L, 1L, 16L, 8L, 9L, 
11L, 12L, 4L, 2L, 6L, 13L, 3L, 5L, 7L, 10L, 14L, 15L, 1L, 16L, 
8L, 9L, 11L, 12L, 4L, 2L, 6L, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

58
推荐指数
1
解决办法
6万
查看次数

从R中的单个字符串中提取所有数字

我们假设你有一个字符串:

strLine <- "The transactions (on your account) were as follows: 0 3,000 (500) 0 2.25 (1,200)"
Run Code Online (Sandbox Code Playgroud)

是否有一个函数将数字去除到数组/向量中,产生以下所需的解决方案:

result <- c(0, 3000, -500, 0, 2.25, -1200)?
Run Code Online (Sandbox Code Playgroud)

result[3] = -500
Run Code Online (Sandbox Code Playgroud)

请注意,数字以会计形式显示,因此负数出现在()之间.此外,您可以假设只有数字出现在数字首次出现的右侧.我对regexp并不是那么好,所以如果你能提供帮助,我会很感激.此外,我不想假设字符串总是相同,所以我希望在第一个数字的位置之前删除所有单词(和任何特殊字符).

regex r

17
推荐指数
2
解决办法
2万
查看次数

R,有条件地删除重复的行

我在R中有一个包含ID.A,ID.B和DISTANCE列的数据帧,其中distance表示ID.A和ID.B之间的距离.对于ID.A的每个值(1-> n),可能存在ID.B和DISTANCE的多个值(即ID.A中可能存在多个重复行,例如,值4中的每个都具有不同的ID.B并且该行的距离).

我希望能够删除ID.A重复的行,但是以距离值为条件,以便为每个ID.A记录留下最小的距离值.

希望这有道理吗?

提前谢谢了

编辑

希望一个例子证明比我的文本更有用.在这里,我想删除ID.A = 3的第二行和第三行:

myDF <- read.table(text="ID.A ID.B DISTANCE
  1 3 1
  2 6 8
  3 2 0.4
  3 3 1
  3 8 5
  4 8  7
  5 2 11", header = TRUE)
Run Code Online (Sandbox Code Playgroud)

conditional r duplicates

8
推荐指数
3
解决办法
7169
查看次数

在R代码中使用ggplot时在图例列表中创建列

我正在使用ggplot(包名:ggplot2)绘制15行,每个行代表一个单独的实体,并希望为它创建一个图例.但是,我无法将图例条目划分为多个列.有人可以建议如何在ggplot环境中做同样的事情.

目前,我使用以下命令创建图例:

opts(title=plotName,legend.position='bottom')
Run Code Online (Sandbox Code Playgroud)

但是,这给出了一个列的图例.因此,图表中的大面积区域由传说本身占据.将它分成2或3列将真正有助于原因,同时将图例保持在图表的底部.我也试过了,legend.direction但是这个命令在一行中显示了图例,这是不可取的,除非我可以将它传播到2-3行.

opts(title=plotName,legend.position='bottom',legend.direction="horizontal")
Run Code Online (Sandbox Code Playgroud)

提前谢谢,Munish

r ggplot2

8
推荐指数
2
解决办法
6868
查看次数

在调用堆栈中显示特殊的基本函数

这个问题提示了以下问题:有没有办法查看调用堆栈中的特殊基本函数?

例如,创建一个在退出时返回调用堆栈的函数:

myFun <- function(obj){
  on.exit(print(sys.calls()))
  return(obj)
}
Run Code Online (Sandbox Code Playgroud)

调用此函数并将其结果分配给对象使用assign避免使用特殊的原始函数:

> assign("myObj",myFun(4))
[[1]]
assign("myObj", myFun(4))

[[2]]
myFun(4)
Run Code Online (Sandbox Code Playgroud)

但是使用赋值运算符,它会被排除在堆栈之外

> `<-`(myObj, myFun(6))
[[1]]
myFun(6)
Run Code Online (Sandbox Code Playgroud)

当然,它可能不是所有的共同希望看到在调用栈中的赋值运算符,而其他功能,如replog也得到隐蔽

callstack r

8
推荐指数
1
解决办法
308
查看次数

如何从数据框中的两列中查找唯一字段值

我有一个包含许多列的数据框,包括QuarterCustomerID.在此我想找出的唯一组合QuarterCustomerID.

例如:

masterdf <- read.csv(text = "
    Quarter,  CustomerID, ProductID
    2009 Q1,    1234,     1
    2009 Q1,    1234,     2
    2009 Q2,    1324,     3
    2009 Q3,    1234,     4
    2009 Q3,    1234,     5
    2009 Q3,    8764,     6
    2009 Q4,    5432,     7")
Run Code Online (Sandbox Code Playgroud)

我想要的是:

FilterQuarter     UniqueCustomerID
2009 Q1           1234
2009 Q2           1324
2009 Q3           8764
2009 Q3           1234
2009 Q4           5432
Run Code Online (Sandbox Code Playgroud)

在R中如何做到这一点?我尝试过unique功能,但它不能正常工作.

r unique

6
推荐指数
1
解决办法
2万
查看次数

R中使用rgl plot3d的三维散点图 - 每个数据点的大小不同?

我在用

plot3d(x,y,z, col=test$color, size=4) 
Run Code Online (Sandbox Code Playgroud)

绘制我的数据集R的3D散点图,但rglsize说法只需要一个尺寸.

是否可以为每个数据点设置不同的大小,可能是另一个库,还是有一个简单的解决方法?

谢谢你的想法!

r scatter-plot rgl

3
推荐指数
1
解决办法
7683
查看次数

R在矩阵中替换NA

在RI中有一个带有一些缺失值的数据框,因此该read.table()函数使用NAs而不是空白单元格.

我写了这个:

a <- sample(1000:50000000, size=120, replace=TRUE)
values <- matrix(a, nrow=6, ncol=20)
mtx <- cbind.data.frame(values, c(rep(NA),6))
mtx <- apply(mtx, 2, function(x){
    if (x==NA) sample(100:500, replace=TRUE, size=nrow(mtx)) else (x)})
Run Code Online (Sandbox Code Playgroud)

但我有这个错误:

Error in if (x == NA) sample(100:500, replace = TRUE, size = nrow(mtx)) else (x) : 
  missing value where TRUE/FALSE needed
In addition: Warning message:
In if (x == NA) sample(100:500, replace = TRUE, size = nrow(mtx)) else (x) :
  the condition has length > 1 and …
Run Code Online (Sandbox Code Playgroud)

r

1
推荐指数
1
解决办法
5157
查看次数

如何在R中使用grep来获取指定的字符?

我有

str=c("00005.profit", "00005.profit-in","00006.profit","00006.profit-in")  
Run Code Online (Sandbox Code Playgroud)

而且我想得到

 "00005.profit"  "00006.profit"
Run Code Online (Sandbox Code Playgroud)

如何grep在R中实现此目的?

grep r

1
推荐指数
1
解决办法
3451
查看次数

R数据重新排列

请让我知道可以重新排列数据的"R代码"

AA 100 NA
BB 200 300
CC 300 NA
DD 100 400
Run Code Online (Sandbox Code Playgroud)

AA 100 0   0   0
BB 0   200 300 0
CC 0   0   300 0
DD 100 0   0   400
Run Code Online (Sandbox Code Playgroud)

要么

   100 200 300 400
AA 1   0   0   0
BB 0   1   1   0
CC 0   0   1   0
DD 1   0   0   1
Run Code Online (Sandbox Code Playgroud)

r

1
推荐指数
1
解决办法
109
查看次数

我有一个向量,其元素包含多个数字.如何对每个元素中的数字求和并创建一个新的向量?

我有一个类的向量'factor':

vec <-c("1,1,1,1,1,2","2,1,2","3,3,4")
Run Code Online (Sandbox Code Playgroud)

我想得到另一个这样的矢量:

sumvec <- c(7, 5, 10)
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?我在用R.

r vector

1
推荐指数
1
解决办法
89
查看次数

删除所需字符串前后匹配模式的字母

我有一个带有以下元素的向量:

myvec<- c("output.chr10.recalibrated", "output.chr11.recalibrated",
"output.chrY.recalibrated")
Run Code Online (Sandbox Code Playgroud)

我希望有选择地提取chr之前.recalibrated和之后的值并得到result.

结果:

10, 11, Y
Run Code Online (Sandbox Code Playgroud)

regex r

0
推荐指数
1
解决办法
177
查看次数

标签 统计

r ×12

ggplot2 ×2

regex ×2

callstack ×1

conditional ×1

duplicates ×1

grep ×1

rgl ×1

scatter-plot ×1

unique ×1

vector ×1