小编Cor*_*one的帖子

向包含行的data.table添加倒计时列,直到遇到特殊行

我有一个data.table有序的数据标签,我想添加一个列,告诉我有多少记录,直到我得到一个重置倒计时的"特殊"记录.

例如:

DT = data.table(idx = c(1,3,3,4,6,7,7,8,9), 
                name = c("a", "a", "a", "b", "a", "a", "b", "a", "b"))
setkey(DT, idx)
#manually add the answer
DT[, countdown := c(3,2,1,0,2,1,0,1,0)]
Run Code Online (Sandbox Code Playgroud)

> DT
   idx name countdown
1:   1    a         3
2:   3    a         2
3:   3    a         1
4:   4    b         0
5:   6    a         2
6:   7    a         1
7:   7    b         0
8:   8    a         1
9:   9    b         0
Run Code Online (Sandbox Code Playgroud)

查看倒计时列如何告诉我有多少行,直到一行称为"b".问题是如何在代码中创建该列.

请注意,键的间距不均匀,可能包含重复项(因此在解决问题时不是很有用).一般来说,非b名称可能不同,但如果解决方案需要,我可以添加一个只有True/False的虚拟列.

r data.table

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

如何为graphNEL图的节点着色?

我正在使用graphNEL来自gRbaseRgraphviz绘图的对象,并且想要在绘图时以不同(指定)颜色为图形的节点着色.例如,我怎么能绘制此图与ab蓝色和cd红色的吗?

library(Rgraphviz)
library(gRbase)
mygraph = dag(~a:c + b:c + b:d)
plot(mygraph)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r graphviz graph-visualization

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

对于data.table setkey,不能在反引号列名中使用逗号?

如果我有一个需要反引号的列名,因为它包含一个逗号,则setkey抛出一个错误,说不要使用逗号.错误指示我,?setkey但我没有看到那些提到这个的例子.我只能找到解决方法是重命名列,setkey然后重命名.

示例代码:

library(data.table)
> DT = data.table(`X, in $` = rnorm(10))
> DT
        X, in $
 1: -1.28475886
 2:  0.97789059
 3: -0.05023914
 4: -0.38133978
 5: -0.24949607
 6:  0.99213156
 7: -0.29310512
 8:  0.02840372
 9:  0.25294231
10: -0.88955013
> setkey(DT, `X, in $`)
Error in setkeyv(x, cols, verbose = verbose) : 
  Don't use comma inside quotes. Please see the examples in help('setkey')
Run Code Online (Sandbox Code Playgroud)

编辑:显示更可能的示例

对我来说,你遇到这个问题的主要原因是在使用reshape2 dcast字符列值(来自外部源,例如数据库)并使它们成为列名后.

只要您不需要键的"连接"行为,并且只想排序,那么您可以通过复制表或使用data.frame相反来解决此问题.例如:

library(ggplot2)
library(reshape2)

DT = data.table(Office = …
Run Code Online (Sandbox Code Playgroud)

r dataframe reshape2 data.table

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

如何使用Rpres降价获得垂直幻灯片

我在RStudio的Rpres文件中使用R markdown.

我知道这是使用reveal.js,它可以做垂直幻灯片.

我需要输入什么降价来创建垂直幻灯片?我所有的努力,到目前为止(--,---,type:subsection)仍然导致一组简单的横向滑动的,只有左,右导航

markdown r rstudio reveal.js

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

导入时是否有退出模块的命令,例如函数的 return

当你在python中导入模块时,模块代码是“run”。有时,在模块中包含分支逻辑很有用,例如检查包版本或平台或其他内容。有没有办法在到达文件末尾之前退出整个模块执行,相当于函数中的提前返回?

如果模块作为脚本运行,您可以 exit() ,但这会主动引发异常并终止整个过程。我只想说,现在你已经完成了,不要再运行下面的代码了。

基本上我可以改变这个

if not <condition>:
    MY_CONSTANT = 3.14
    class blah():
       ...

    def foo(x):
       ...

    # rest of module....
Run Code Online (Sandbox Code Playgroud)

进入

if <condition>:
    return from module

MY_CONSTANT = 3.14
class blah():
   ...

def foo(x):
   ...

# rest of module....
Run Code Online (Sandbox Code Playgroud)

主要是这样我就不必编写大量看起来奇怪的额外缩进级别的代码。

python python-import

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

使用ggplot2中的图形缩放点的大小

我想绘制相关矩阵的Hinton图,我可以得到99%的路径,但是当我设置我正在绘制的点的大小时,该大小以像素为单位,因此不会缩放为图表大小发生变化.例如,如何将点的大小"校准"为轴大小的一小部分?我希望它是这样的,当我加倍图形的大小时,点数加倍.我可能使用了错误的geom.

到目前为止我有这个代码:

library(ggplot2)
library(data.table)
library(reshape2)

DT = data.table(A = rnorm(10), B = rnorm(10), X = rnorm(10), Y = rnorm(10))
C = cor(DT)

ggplot(melt(C), aes(x=Var1, y=Var2, size=abs(value), color=as.factor(sign(value)))) +
  geom_point(shape = 15) +
  scale_size_area(max_size = 40) +
  theme_bw()
Run Code Online (Sandbox Code Playgroud)

通过更改max_sizefor scale_size_area我可以让对角线填充该区域,但如果我更改图表的大小,则点不会缩放.有没有办法强制点在轴坐标中采用特定尺寸?理想情况下,当然,我想使用矩形,以便我可以有任何形状,它仍然有效,但我不知道一个geom会这样做?

在此输入图像描述

r ggplot2

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

使用roll = TRUE和allow.cartesian = TRUE

什么是进行笛卡尔连接并使用前滚特征的最佳方法,但是将滚动特征应用于连接表中的每个替代系列,而不是整个系列.

最佳解释一个例子:

library(data.table)
A = data.table(x = c(1,2,3,4,5), y = letters[1:5])
B = data.table(x = c(1,2,3,1,4), f = c("Alice","Alice","Alice", "Bob","Bob"), z = 101:105)
setkey(B,x)
C = B[A, roll = TRUE, allow.cartesian=TRUE, rollends = FALSE]

A
B
C[f == "Alice"]
C[f == "Bob"]
C
Run Code Online (Sandbox Code Playgroud)

所以我们有两个起始表:

> A
   x y
1: 1 a
2: 2 b
3: 3 c
4: 4 d
5: 5 e
> B
   x     f   z
1: 1 Alice 101
2: 1   Bob 104
3: 2 Alice 102 …
Run Code Online (Sandbox Code Playgroud)

join r cartesian-product data.table

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

在R中以"V,W,X,Y和Z"样式输出列表的简单方法

在使用rmarkdown它时,通常需要以编程方式生成文本片段,特别是列出正在使用的项目.例如;

The species of iris examined were `r cat(as.character(unique(iris$Species)), sep = ", ")`.
Run Code Online (Sandbox Code Playgroud)

哪个会产生

检查的虹膜种类是setosa,versicolor,virginica.

要正确阅读它应该是

检查的虹膜种类是setosa,versicolor和virginica.

有一个简单的方法吗?

string formatting r r-markdown

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

通过“每月的第一个星期一”等重新采样熊猫时间序列

我有一个(每日)pandas timeSeries,我需要过滤到每月,使用特定工作日的第 n 个出现作为选择日期的规则

到目前为止,我认为最好的方法是首先列出我感兴趣的所有日期的列表或系列,然后询问这些日期的时间序列?

但这仍然留下了一个问题,即我如何列出两个日期之间发生的所有“本月的第二个星期二”?

python pandas

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

根据条件从大型data.table中的每个组中选择一行

我有一个表重复键重复多次,一个表为每个键选择一行,使用另一列的最大值.

这个例子展示了我目前的解决方案:

N = 10
k = 2
DT = data.table(X = rep(1:N, each = k), Y = rnorm(k*N))
     X           Y
 1:  1 -1.37925206
 2:  1 -0.53837461
 3:  2  0.26516340
 4:  2 -0.04643483
 5:  3  0.40331424
 6:  3  0.28667275
 7:  4 -0.30342327
 8:  4 -2.13143267
 9:  5  2.11178673
10:  5 -0.98047230
11:  6 -0.27230783
12:  6 -0.79540934
13:  7  1.54264549
14:  7  0.40079650
15:  8 -0.98474297
16:  8  0.73179201
17:  9 -0.34590491
18:  9 -0.55897393
19: 10  0.97523187
20: 10 …
Run Code Online (Sandbox Code Playgroud)

r data.table

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