小编nac*_*cab的帖子

如何使用长格式的R数据帧子集进行操作?

我有一个包含3组和3天的数据框:

set.seed(10)
dat <- data.frame(group=rep(c("g1","g2","g3"),each=3), day=rep(c(0,2,4),3), value=runif(9))
#   group day    value
# 1    g1   0 0.507478
# 2    g1   2 0.306769
# 3    g1   4 0.426908
# 4    g2   0 0.693102
# 5    g2   2 0.085136
# 6    g2   4 0.225437
# 7    g3   0 0.274531
# 8    g3   2 0.272305
# 9    g3   4 0.615829
Run Code Online (Sandbox Code Playgroud)

我想取log2并将每个值除以每组中的第0天值.我现在这样做的方法是通过计算中间步骤中的每一天组:

day_0 <- dat[dat$day==0, "value"]
day_2 <- dat[dat$day==2, "value"]
day_4 <- dat[dat$day==4, "value"]
res <- cbind(0, log2(day_2/day_0), log2(day_4/day_0))
rownames(res) <- c("g1","g2","g3")
colnames(res) <- c("day_0","log_ratio_day_2_day_0","log_ratio_day_4_day_0") …
Run Code Online (Sandbox Code Playgroud)

r plyr dataframe data.table

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

ggplot:如何创建一个自动适合数据的离散调色板?

我有一个自定义的功能,我用于我的所有情节而不是平原ggplot:

my_ggplot <- function(...){
    ggplot(...) +
    theme_bw() +
    scale_colour_manual(values=get_palette(20)) +
    theme(axis.text.x=element_text(size=15),
          axis.text.y=element_text(size=15),
          axis.title.y=element_text(vjust=-.5, size=15, face="bold"),
          axis.title.x=element_text(vjust=-.5, size=15, face="bold"),
          plot.title=element_text(vjust=1, size=18, face="bold"),
          legend.title=element_text(size=15, face="bold"),
          plot.margin=unit(c(2,1,2,2), "lines")) # T R B L
}
Run Code Online (Sandbox Code Playgroud)

现在我可以这样做:

my_ggplot(molten_df, aes(timepoint,count,group=gene_symbol)) +
    geom_line(aes(color=gene_symbol), lwd=1.5)
Run Code Online (Sandbox Code Playgroud)

这给了我不错的标签字体大小和我自己的色标.不幸的是,我必须手动将调色板大小(20)编码到我的get_palette函数,该函数根据我传递的数字返回不同的调色板.

我的问题:有没有办法推断出颜色美学会有多少级别,所以当我需要绘制21种颜色时,my_ggplot不会崩溃?我想这是ggplot的方式,但我似乎无法在他们的源代码中找到相关的功能.

由@ user946850回答 这是我最终做的事情:

my_ggplot <- function(...){
    ggplot(...) +
    theme_bw() +
    discrete_scale("colour", "my_scale", dyn_palette()) +
    theme(axis.text.x=element_text(size=15),
          axis.text.y=element_text(size=15),
          axis.title.y=element_text(vjust=-.5, size=15, face="bold"),
          axis.title.x=element_text(vjust=-.5, size=15, face="bold"),
          plot.title=element_text(vjust=1, size=18, face="bold"),
          legend.title=element_text(size=15, face="bold"),
          plot.margin=unit(c(2,1,2,2), "lines")) # T R B L
}

dyn_palette <- function(){
  function(n){ …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

如何动态调用变量?

我与我存储在三个列表三个实验工作:exp1,exp2exp3.每个列表有几个项目(name,conditions,dataset_a,dataset_b,等).有时我想对所有实验进行操作.有没有办法将它们的名称存储在变量中并动态调用它们?这不起作用:

all_exp <- list(exp1=exp1,exp2=exp2,exp3=exp3)
Run Code Online (Sandbox Code Playgroud)

因为如果我后来在实验中添加了一些东西,那么all_exp在先前的状态下有一个实验的硬拷贝,而不是参考.

这种作品:

all_exp_names <- c("exp1","exp2","exp3")
all_exp <- lapply(all_exp_names, function(exp_name) (eval(parse(text=exp_name))))
Run Code Online (Sandbox Code Playgroud)

但必须有一个更简单的方法,此外,返回的列表会丢失实验名称.

r

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

如何在内部函数中重用参数?

我有一个do_something接收四个参数并调用内部函数的函数get_options:

do_something <- function(name, amount, manufacturer="abc", width=4){ 
    opts <- get_options(amount, manufacturer = manufacturer, width = width)
}

get_options <- function(amount, manufacturer="abc", width = 4) { 
    opts <- validate_options(manufacturer, width)
}
Run Code Online (Sandbox Code Playgroud)

有时我会做get_options(400),有时我想覆盖参数get_options(400, manufacturer = "def"),有时我打电话do_something("A", 400),或者do_something("A", 400, width=10).

通过在两个函数中为我的参数指定相同的默认值,似乎我是多余的.有没有更好的方法让他们分享这些默认值?

r

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

如何嵌套 knit 调用来修复重复的块标签错误?

knit当我调用在调用内部使用的函数时,我遇到了重复标签错误knit。如果我标记这些块,问题就会消失。有没有办法some_function以不与父调用冲突的方式进行调用knit

library(knitr)
some_function <- function(){
    knit(text ="
    ```{r }
        1
    ```
    ")
}
cat(knit(text ="
```{r }
    some_function()   
```
```{r }
    some_function()   
```
"))
Run Code Online (Sandbox Code Playgroud)

输出:

```r
some_function()
```

```
## Error: duplicate label 'unnamed-chunk-1'
```
Run Code Online (Sandbox Code Playgroud)

r knitr

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

如何查看复制HTML内容时复制的隐藏格式?

有没有办法复制样式化的HTML并获得Chrome看到的相关格式?例如,如果我复制这个问题的标题,我将其粘贴到我的新闻稿提供者(MailChimp)给我的文本编辑器中,然后切换到HTML模式,我可以看到实际复制的是:

<h1 itemprop="name" style="margin: 0px 0px 7px; padding: 0px; border: 0px; font-size: 23.3333339691162px; vertical-align: baseline; font-family: 'Trebuchet MS', 'Liberation Sans', 'DejaVu Sans', sans-serif; line-height: 1.3; background: rgb(255, 255, 255);">
    <a href="http://stackoverflow.com/questions/24907135/error-cannot-read-property-of-undefined" class="question-hyperlink" style="margin: 0px; padding: 0px; border: 0px; font-size: 23.3333339691162px; vertical-align: baseline; color: rgb(0, 0, 0); text-decoration: none; cursor: pointer; background: transparent;">
        How to see the hidden formats that get copied when copying HTML content?
    </a>
</h1>
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以使用专用工具(而不是我的新闻通讯提供商)提取这些信息?

编辑:只是为了说清楚,如果我检查标题标题并点击Copy,我得到没有嵌入式CSS的HTML:

<h1 itemprop="name">
    <a href="/questions/24907376/how-to-see-the-hidden-formats-that-get-copied-when-copying-html-content" class="question-hyperlink">How to see the …
Run Code Online (Sandbox Code Playgroud)

html css google-chrome copy-paste

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

如何在 jq 中传播对象的属性?

如果我需要访问对象的属性,我当前正在手动访问每个属性:

echo '{"a": {"a1":1, "a2": 2}, "b": 3}' | jq '{a1:.a.a1, a2: .a.a2,b}'
{
  "a1": 1,
  "a2": 2,
  "b": 3
}
Run Code Online (Sandbox Code Playgroud)

我想避免指定每个属性。JS 中是否有相当于对象扩展运算符的东西,例如jq '{...a, b}'

json key object jq

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

如何使用D3同时按多个键分组?

此作品,但我想知道是否有比创建一个字符串,更好的方式ab后来分裂它:

const data = [
    { a: 10, b: 20, c: 30, d: 40 },
    { a: 10, b: 20, c: 31, d: 41 },
    { a: 12, b: 22, c: 32, d: 42 }
];

d3.rollups(
    data,
    x => ({
      c: x.map(d => d.c),
      d: x.map(d => d.d)
    }),
    d => `${d.a} ${d.b}`
  )
  .map(([key, values]) => {
    const [a, b] = key.split(' ');
    return {a, b, ...values};
  });

// OUTPUT
// [
//   {a: …
Run Code Online (Sandbox Code Playgroud)

javascript d3.js

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

如何在zsh中扩展数组的元素?

假设我在 zsh 中有一个数组

a=(1 2 3)
Run Code Online (Sandbox Code Playgroud)

我想附加.txt到每个元素

echo ${a}.txt # this doesn't work
Run Code Online (Sandbox Code Playgroud)

所以输出是

1.txt 2.txt 3.txt
Run Code Online (Sandbox Code Playgroud)

更新:

我想我可以做到这一点,但我认为有一种更惯用的方式:

for i in $a; do
    echo $i.txt
done
Run Code Online (Sandbox Code Playgroud)

arrays zsh variable-expansion

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

如何使用 Cypress 比较两个 DOM 元素?

我试图检查一个contenteditable元素是否被聚焦(它有闪烁的插入符号),但这不起作用:

cy.get('span[contenteditable]').then($span => {
    cy.focused().then($focused => {
        expect($focused).to.eql($span)
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该怎么做?

cypress

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