小编Ric*_*rta的帖子

什么是seq_along工作的例子,但seq会产生意想不到的结果?

什么时候seq_along有效,但seq会产生意想不到的结果?

?seq我们的文档:

请注意,无论参数名称如何,它都会调度第一个参数的类.如果仅使用一个参数来调用它可能会产生意想不到的后果 along.with:这样做会更好:seq_along在这种情况下使用它会好得多.

r seq

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

eval(解析(...))的危险是什么?

关于如何避免使用有几个问题 eval(parse(...))

这引发了一些问题:

  • 为什么要特别eval(parse())避免?
  • 最重要的是,危险是什么?
    • 如果代码没有用于生产,是否有任何危险?(我在想,任何可能会产生意想不到的结果的危险.很明显,如果你不小心你正在解析什么,你就会遇到问题.但这是否比邋with更危险get()?)

parsing eval r

62
推荐指数
4
解决办法
1万
查看次数

ifelse每次都真的计算它的两个向量吗?它慢吗?

难道ifelse真的同时计算yesno载体-如,每个向量的全部?或者它只是从每个向量计算一些值?

还有,ifelse真的那么慢吗?

performance if-statement r vectorization

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

清理因子水平(折叠多个级别/标签)

清理包含需要折叠的多个级别的因子的最有效(即有效/适当)方法是什么?也就是说,如何将两个或多个因子级别组合成一个.

这是一个示例,其中"是"和"Y"这两个级别应折叠为"是","否"和"N"折叠为"否":

## Given: 
x <- c("Y", "Y", "Yes", "N", "No", "H")   # The 'H' should be treated as NA

## expectedOutput
[1] Yes  Yes  Yes  No   No   <NA>
Levels: Yes No  # <~~ NOTICE ONLY **TWO** LEVELS
Run Code Online (Sandbox Code Playgroud)

一个选择当然是在手工使用sub和朋友之前清理琴弦.

另一种方法是允许重复标签,然后丢弃它们

## Duplicate levels ==> "Warning: deprecated"
x.f <- factor(x, levels=c("Y", "Yes", "No", "N"), labels=c("Yes", "Yes", "No", "No"))

## the above line can be wrapped in either of the next two lines
factor(x.f)      
droplevels(x.f) 
Run Code Online (Sandbox Code Playgroud)

但是,有更有效的方法吗?


虽然我知道levels …

r factors r-faq

53
推荐指数
5
解决办法
3万
查看次数

反ggplotGrob?

我有一个函数来操作ggplot对象,通过将其转换为grob然后修改图层.我希望函数返回一个ggplot对象而不是grob.有没有一种简单的方法将grob转换回gg?

该文档ggplotGrob是非常稀疏.
简单的例子:

P <- ggplot(iris) + geom_bar(aes(x=Species, y=Petal.Width), stat="identity")

G <- ggplotGrob(P)
... some manipulation to G ...

## DESIRED: 
P2 <- inverse_of_ggplotGrob(G)

such that, we can continue to use basic ggplot syntax, ie
`P2 + ylab ("The Width of the Petal")`
Run Code Online (Sandbox Code Playgroud)

更新:

要回答评论中的问题,这里的动机是根据每个方面中标签名称的值,以编程方式修改构面标签的颜色.以下功能很好地工作(基于前一个问题中的baptise输入).

我希望返回值colorByGroup是一个ggplot对象,而不仅仅是一个grob.

这是代码,对于那些感兴趣的人

get_grob_strips <- function(G, strips=grep(pattern="strip.*", G$layout$name)) {

  if (inherits(G, "gg"))
    G <- ggplotGrob(G)
  if (!inherits(G, "gtable"))
    stop ("G must be a gtable object or a gg object")

  strip.type <- …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 grob

49
推荐指数
2
解决办法
2727
查看次数

如何更改data.table中因子列的级别

更改a中factor列的级别的正确方法是什么data.table (注意:不是数据框)

  library(data.table)
  mydt <- data.table(id=1:6, value=as.factor(c("A", "A", "B", "B", "B", "C")), key="id")

  mydt[, levels(value)]
  [1] "A" "B" "C"
Run Code Online (Sandbox Code Playgroud)

我正在寻找类似的东西:

mydt[, levels(value) <- c("X", "Y", "Z")]
Run Code Online (Sandbox Code Playgroud)

但是,当然,上述行不起作用.

    # Actual               # Expected result
    > mydt                  > mydt
       id value                id value
    1:  1     A             1:  1     X
    2:  2     A             2:  2     X
    3:  3     B             3:  3     Y
    4:  4     B             4:  4     Y
    5:  5     B             5:  5     Y
    6:  6     C             6:  6     Z
Run Code Online (Sandbox Code Playgroud)

r data.table

48
推荐指数
3
解决办法
7万
查看次数

手动设置ggplot2的组颜色

我有一个数据集,我必须从中制作几十个图.数据由30个组组成,每组内有多个测量值.

大多数情节不会同时使用所有群组.

我的目标是为一组组提供一个单色托盘,使得任何给定组在所有图形中都是相同的颜色.在下面的例子中,这将意味着Group C在相同的颜色Plot 1Plot 2.

我的问题是如何解决这个问题.

我尝试过scale_fill_manual的几种变体(适当的时候还有scal_color_manual).虽然颜色是从指定的托盘中选择的,但我似乎无法通过组来索引托盘,或者以其他方式"跳过"对应于缺少组的颜色

我还想过尝试将颜色信息添加为正在绘制的数据列,但我不确定如何使用此列作为组的颜色.

情节示例

# SAMPLE DATA: 
DT1 <- data.table(Name=c("C_sub1", "A_sub1", "A_sub2"), Value=c(2,5,3), Group=c("C", "A", "A"), key="Group")
DT2 <- data.table(Name=c("A_sub1", "B_sub1", "C_sub1", "C_sub2"), Value=c(4,3,6,3), Group=c("A", "B", "C", "C"), key="Group")

# SAMPLE Color Pallette  
ColorsDT <-  data.table(Group=LETTERS[1:5], Color=c("#333BFF", "#CC6600", "#9633FF", "#E2FF33", "#E3DB71"), key="Group")

# Add a column for Color, according to the Group
DT1[ColorsDT, Color := i.Color]
DT2[ColorsDT, Color := i.Color]

# A Basic Plot
simplePlot <- function(DT, tit) 
  ggplot(DT …
Run Code Online (Sandbox Code Playgroud)

r colors ggplot2

46
推荐指数
1
解决办法
5万
查看次数

R中的data.frame和data.table之间有什么实际区别

显然在我的上一个问题中,我表现出了data.frame和之间的混淆data.table.不可否认,我没有意识到有区别.

所以我读了每个人的帮助,但是在实际的日常用语中,有什么不同,含义是什么以及每个用于什么会有助于指导我们适当的用法?

r data.table

44
推荐指数
3
解决办法
5万
查看次数

在脚本中使用setwd()的风险?

我听说它说setwd()在脚本中使用是不好的做法.

  • 与之相关的风险/危险是什么?
  • 什么是更好的选择?

r setwd

25
推荐指数
3
解决办法
9332
查看次数

在ggplot2对象中的现有图层下插入图层

鉴于现有的剧情对象是有可能添加层UNDERNEATH现有图层?

例如,在下面的图表中,是有可能添加geom_boxplot()P使得出现箱线图下方 geom_point()

## Starting from: 
library(ggplot2)
P <- ggplot(data=dat, aes(x=id, y=val)) + geom_point()

## This adds boxplot, but obscures some of the points
P + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

预期产出:

# Which is essentially
ggplot(data=dat, aes(x=id, y=val)) + geom_boxplot() + geom_point()
## However, this involves re-coding all of P (after the point insertion of the new layer).
##   which is what I am hoping to avoid. 
Run Code Online (Sandbox Code Playgroud)

示例输出


额外问题: 如果现有图中有多个图层,是否可以指示插入新图层的具体位置(相对于现有图层)?


样本数据

set.seed(1)
N <- 100
id …
Run Code Online (Sandbox Code Playgroud)

r layer ggplot2

23
推荐指数
2
解决办法
3403
查看次数