小编mor*_*fin的帖子

在R中,以点开头的变量存储在哪里?

我很好奇以点开头的变量.例如

.var <- 100
Run Code Online (Sandbox Code Playgroud)

它不属于全球环境.这个变量属于什么环境?

r global-variables

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

在R data.table中运行Sum

我在R中有一个data.table,我想按组分别应用滚动总和.但问题是组长度不一样,当rollapply函数到达较短的组时,它会遇到错误.有没有办法解决这个问题,除了循环?

以下是一个简单的例子来说明问题.

DT <- data.table(id = c(rep("A", 6), rep("B", 2), rep("C", 8)),
                 val = c(1:6, 1:2, 1:8))
> DT
    id val
 1:  A   1
 2:  A   2
 3:  A   3
 4:  A   4
 5:  A   5
 6:  A   6
 7:  B   1
 8:  B   2
 9:  B   1
10:  B   2
11:  B   3
12:  B   4
13:  B   5
14:  B   6
15:  C   7
16:  C   8
Run Code Online (Sandbox Code Playgroud)

滚动总和4个数字,使用 rollapplyr()

DT[, cum.sum := rollapplyr(val, width = 4, FUN = …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

将公式列表应用于R data.table

我有一个data.table和一个公式列表,

DT <- data.table(A = c(1:3), B = c(3:1), C = c(4:6), D = (6:4))
l <- list(f1 = "A + B", f2 = "B + C", f3 = "C - D", f4 = "D / A")
Run Code Online (Sandbox Code Playgroud)

这可以通过以下方式实现

DT[, ":="(f1 = A + B, f2 = B + C, f3 = C - D, f4 = D / A)]
Run Code Online (Sandbox Code Playgroud)

要么

for (i in 1:length(l)) {
  DT[, eval(names(l)[i]) := eval(parse(text=l[[i]]))]
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在l不使用循环的情况下使用信息?

# some code
DT
#    A B …
Run Code Online (Sandbox Code Playgroud)

r data.table

3
推荐指数
1
解决办法
124
查看次数

data.table基于组的滞后值删除行

我有一个data.table以下形式:

DT <- data.table(tag = rep(c("A", "B"), each = 10),
                 value =  c(0, 3, 3, 3, 0, 1, 1, 1, 3, 0,
                            0, 1, 3, 1, 0, 3, 0, 1, 1, 0))
> DT
    tag value
 1:   A     0
 2:   A     3
 3:   A     3
 4:   A     3
 5:   A     0
 6:   A     1
 7:   A     1
 8:   A     1
 9:   A     3
10:   A     0
11:   B     0
12:   B     1
13:   B     3
14:   B     1 …
Run Code Online (Sandbox Code Playgroud)

r data.table

2
推荐指数
1
解决办法
102
查看次数

标签 统计

r ×4

data.table ×3

global-variables ×1