我有一个包含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) 我有一个自定义的功能,我用于我的所有情节而不是平原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) 我与我存储在三个列表三个实验工作:exp1,exp2和exp3.每个列表有几个项目(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)
但必须有一个更简单的方法,此外,返回的列表会丢失实验名称.
我有一个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).
通过在两个函数中为我的参数指定相同的默认值,似乎我是多余的.有没有更好的方法让他们分享这些默认值?
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) 有没有办法复制样式化的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) 如果我需要访问对象的属性,我当前正在手动访问每个属性:
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}'?
此作品,但我想知道是否有比创建一个字符串,更好的方式a和b后来分裂它:
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) 假设我在 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) 我试图检查一个contenteditable元素是否被聚焦(它有闪烁的插入符号),但这不起作用:
cy.get('span[contenteditable]').then($span => {
cy.focused().then($focused => {
expect($focused).to.eql($span)
}
}
Run Code Online (Sandbox Code Playgroud)
我应该怎么做?