小编sha*_*roz的帖子

使用字符串向量输入在dplyr中按多列分组

我试图将我对plyr的理解转移到dplyr,但我无法弄清楚如何按多列分组.

# make data with weird column names that can't be hard coded
data = data.frame(
  asihckhdoydkhxiydfgfTgdsx = sample(LETTERS[1:3], 100, replace=TRUE),
  a30mvxigxkghc5cdsvxvyv0ja = sample(LETTERS[1:3], 100, replace=TRUE),
  value = rnorm(100)
)

# get the columns we want to average within
columns = names(data)[-3]

# plyr - works
ddply(data, columns, summarize, value=mean(value))

# dplyr - raises error
data %.%
  group_by(columns) %.%
  summarise(Value = mean(value))
#> Error in eval(expr, envir, enclos) : index out of bounds
Run Code Online (Sandbox Code Playgroud)

将plyr示例翻译成dplyr-esque语法我错过了什么?

编辑2017:Dplyr已更新,因此可以使用更简单的解决方案.查看当前选择的答案.

r r-faq dplyr

145
推荐指数
7
解决办法
8万
查看次数

将列表转换为向量的更好方法?

我有一个命名值列表:

myList <- list('A'=1, 'B'=2, 'C'=3)
Run Code Online (Sandbox Code Playgroud)

我想要一个具有该值的向量 1:3

我无法弄清楚如何在不定义函数的情况下提取值.有一种我不知道的简单方法吗?

library(plyr)
myvector <- laply(myList, function(x) x)
Run Code Online (Sandbox Code Playgroud)

是否有类似于myList$Values剥离名称并将其作为向量返回的东西?

r list plyr

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

通过TortoiseHg Mercurial - 合并一个命名分支然后关闭它

我有一个命名分支,NewFeature,我从默认分支.我已经对该分支进行了一些提交,现在我想将它合并以重新加入默认分支.

现在(每个字母都是提交):

   default: A---B
NewFeature:      \--C---D
Run Code Online (Sandbox Code Playgroud)

我想要的是什么:

   default: A---B-----------E
NewFeature:      \--C---D--/
Run Code Online (Sandbox Code Playgroud)

我试图右键单击目录并选择"Hg Commit ...".然后我选择了"关闭当前命名的分支".我收到了这个错误:abort: can only close branch heads

我还在存储库资源管理器中查找了"close branch"选项,但我找不到任何东西.

有人可以帮忙吗?提前致谢!

编辑:我向TortoiseHg 发布了一个问题

mercurial tortoisehg

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

没有轴或网格的ggplot2主题

我试图制作一个没有数据之外的信息的情节.没有轴; 没有网格; 无题; 只是情节.

但我不断获得额外的利润和填充,我无法删除.

library(ggplot2)
library(grid)

theme_bare <- theme(
  axis.line = element_blank(), 
  axis.text.x = element_blank(), 
  axis.text.y = element_blank(),
  axis.ticks = element_blank(), 
  axis.title.x = element_blank(), 
  axis.title.y = element_blank(), 
  #axis.ticks.length = unit(0, "lines"), # Error 
  axis.ticks.margin = unit(c(0,0,0,0), "lines"), 
  legend.position = "none", 
  panel.background = element_rect(fill = "gray"), 
  panel.border = element_blank(), 
  panel.grid.major = element_blank(), 
  panel.grid.minor = element_blank(), 
  panel.margin = unit(c(0,0,0,0), "lines"), 
  plot.background = element_rect(fill = "blue"),
  plot.margin = unit(c(0,0,0,0), "lines")
)

ggplot() + 
  geom_area (data=economics, aes(x = date, y = unemploy), linetype=0) …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

着色器优化:三元运算符是否等同于分支?

我正在研究一个顶点着色器,我想要有条件地删除一些顶点:

float visible = texture(VisibleTexture, index).x;
if (visible > threshold)
    gl_Vertex.z = 9999; // send out of frustum
Run Code Online (Sandbox Code Playgroud)

我知道当相邻数据之间几乎没有共性时,分支会破坏性能.在这种情况下,每个其他顶点可能会得到一个不同的"可见"值,这对于本地着色器核心集群的性能(从我的理解)来说是不利的.

我的问题:三元运算符是否更好(无论可读性问题)?

float visible = texture(VisibleTexture, index).x;
gl_Vertex.z = (visible > threshold) ? 9999 : gl_Vertex.z;
Run Code Online (Sandbox Code Playgroud)

如果没有,是否将其转换为有价值的计算?

float visible = texture(VisibleTexture, index).x;
visible = sign(visible - threshold) * .5 + .5; // 1=visible, 0=invisible
gl_Vertex.z += 9999 * visible; // original value only for visible
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来放弃顶点而不依赖于几何着色器?

在此先感谢您的帮助!

graphics optimization shader

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

C#中的H.264(或类似)编码器?

有谁知道C#(或任何其他托管语言)的开源H.264编码器?我也许可以使用python实现.

我发现的库(例如x264)是用非常低级别的c(用大量宏程序编写)和汇编编写的.调整它们的结果远比我想象的要复杂得多.我的项目不关心性能或兼容性.我们只想测试一些想法会如何影响输出视频的感知.

如果需要,我们愿意为代码付费或许可.

提前致谢!

编辑 - 一些要点:

  1. 我根本不关心性能(例如实时编码).编码所有我关心可能需要10天.
  2. 包装器没有帮助,因为我想实际修改编码器本身.

c# video-encoding h.264

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

降价表达式和结果可以在同一个块中交错吗?

R markdown中的一个简单块:

```{r}
1 + 2
3 + 4
```
Run Code Online (Sandbox Code Playgroud)

当knitr转换为html时会产生以下内容:

<pre><code class="r">1 + 2</code></pre>
<pre><code>## 3</code></pre>

<pre><code class="r">3 + 4</code></pre>
<pre><code>## 7</code></pre>
Run Code Online (Sandbox Code Playgroud)

我试图在一个块中输出表达式和结果

<pre><code class="r">
1 + 2
## 3
3 + 4
## 7
</code></pre>
Run Code Online (Sandbox Code Playgroud)

我试过修补块参数(例如结果和回声)无济于事.有没有办法实现这个目标?

注意:我可能会破解CSS ::first::last选择器,但我很好奇是否有内置选项.

r knitr r-markdown

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

相对于每组中的值进行缩放(通过dplyr)

我有一组时间序列,我想在特定的时间间隔内相对于它们的值来缩放每个时间序列.这样,每个系列在那个时候都是1.0,并按比例改变.

我无法弄清楚如何用dplyr做到这一点.

这是一个使用for循环的工作示例:

library(dplyr)

data = expand.grid(
  category = LETTERS[1:3],
  year = 2000:2005)
data$value = runif(nrow(data))

# the first time point in the series
baseYear = 2002

# for each category, divide all the values by the category's value in the base year
for(category in as.character(levels(factor(data$category)))) {
  data[data$category == category,]$value = data[data$category == category,]$value / data[data$category == category & data$year == baseYear,]$value[[1]]
}
Run Code Online (Sandbox Code Playgroud)

编辑:修改了问题,使基准时间点不可索引.有时"时间"列实际上是一个因素,不一定是序数.

r dplyr

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

D3.js - 嵌套对象的动画出口

对于每个数据项,我添加一个组(g class ="parent"),其中包含一个圆圈.添加它们并设置它们的属性很好.

但我无法弄清楚如何处理删除.在退出时为嵌套对象设置动画的方法是什么?

// parents
var parents = svg.selectAll("parent").data(glyphs);
parents.enter()
    .append("g")
    .attr("class", "parent")
    .attr("transform", function (glyph) { 
        return "translate(" + glyph.x + "," + glyph.y + ")";
    });

// children
var circles = parents.append("circle");
circles
    .attr("r", 0)
    .attr("fill", function (glyph) { return glyph.color; });
// animated entry
circles.transition()
    .attr("r", function (glyph) { return glyph.radius; });
Run Code Online (Sandbox Code Playgroud)

这是不起作用的部分.我不确定如何在退出时给孩子们制作动画.

// animate exit
circles
    .exit() // <-- not valid
    .transition()
    .duration(250)
    .attr("r", 0);
parents
    .exit()
    .transition()
    .delay(250)
    .remove();
Run Code Online (Sandbox Code Playgroud)

有人可以提供一些提示或指出一个很好的例子吗?

animation d3.js

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

展开比例尺/轴的顶部以包含文本

我正在尝试注释图形的每个方面中的最高值。

我不知道如何在不将文本剪裁到最高值上方的情况下删除y轴底部的多余空间。

A)是否存在非对称版本scale_y_continuous(expand=c(0,0))

B)或者,是否有一种方法可以使ggplot包含文本作为图形范围的一部分?

# a simple dataset
count <- 40
data <- data.frame(
  category = sample(LETTERS[1:3], count, TRUE),
  x = rnorm(count),
  y = abs(rnorm(count))
)

# find the highest value in each category
require(plyr)
data <- data[order(-data$y),]
topValues <- ddply(data, .(category), head, 1)

require(ggplot2)
ggplot(data) +
  geom_line(aes(x=x, y=y)) +
  geom_text(data=topValues, aes(x=x, y=y, label=y)) + # label the highest y value
  # add vjust=-1 to put text above point if possible
  facet_grid(category ~ ., scale="free") +
  scale_x_continuous(expand=c(0,0)) + …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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