小编Gre*_*001的帖子

有趣的一系列字母

正在练习基本操作并找到一些有趣的东西.

test <- array(0,dim = c(1,26))
colnames(test) <- letters
Run Code Online (Sandbox Code Playgroud)

我期待一个字母作为colname的数组,但事实证明是这样的

第24列的名称无疑是"x",而结果则不是.有趣.埃里克

arrays r rstudio

8
推荐指数
0
解决办法
224
查看次数

如何确定r中长序列的最长连续序列

我有一个序列作为玩具示例。如何确定最长的连续子序列?现在,我可以找到临界点在哪里,如何获得这些值?

DT <- data.table(X = c(3:7, 16:18, 22:29, 31:36))
DT[,Y:=(shift(.SD,type = "lag", fill = -1))][,Y:= Y-X]
with(DT, which(Y !=-1)) 
Run Code Online (Sandbox Code Playgroud)

我希望找到的是子序列的值,在这种情况下,应为 c(22, 23, 24, 25, 26, 27, 28, 29)

r data.table

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

我们可以一次在多个对象上 setDT 吗?

我需要从外部加载许多 rds 文件,为了让事情变得更顺畅,我倾向于在对象上设置 DT。

是否可以一次设置所有的DT?我试过:

lapply(ls(), setDT)
lapply(list(ls()), setDT)
for(i in ls()) setDT(i)

#Error in FUN(X[[i]], ...) : 
#  Argument 'x' to 'setDT' should be a 'list', 'data.frame' or 'data.table'
Run Code Online (Sandbox Code Playgroud)

结果都是一样的。有没有更优雅的方法来做到这一点?

ps 一位朋友建议使用do.call

do.call(setDT, list("A", "B", "C"))
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。

r data.table

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

如何在不使用管道的情况下将 dcast 引入 data.table 链?

data.table 使用链式规则优雅而直观。一切都像机器一样排列整齐。但有时我们不得不引入一些像dcast或熔化这样的操作。如何将所有操作集成到[]? 我承认,仅仅是因为它更优雅。

DT <- data.table(A = rep(letters[1:3],4), B = rep(1:4,3), C = rep(c("OK", "NG"),6))
DT.1 <- DT[,.N, by = .(B,C)] %>% dcast(B~C)
DT.2 <- DT.1[,.N, by = .(NG)]
#   NG N
#1: NA 2
#2:  3 2

#same
DT <- data.table(A = rep(letters[1:3],4), B = rep(1:4,3), C = rep(c("OK", "NG"),6))[,.N, by = .(B, C)] %>% 
dcast(B~C) %>% .[,.N, by =.(NG)]
Run Code Online (Sandbox Code Playgroud)

我可以删除%>%并集成到 中[]吗?谢谢

r data.table

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

如何找到最长的连续数及其位置?

我有一个如下的数字向量。

V1 <- c(1:3, 7:20, 23,45,55,27:30, 66, 88:89)
Run Code Online (Sandbox Code Playgroud)

如何找到最长的连续序列和位置?在这种情况下,所述靶序列的长度是14与该位置是18 请告知

我的丑是使用whichshift

V1 <- c(1:3, 7:20, 23,45,55,27:30, 66, 88:89)
V2 <- c(1, which(V1-shift(V1)!=1)
max(V2-shift(V2, fill =0))
Run Code Online (Sandbox Code Playgroud)

但是我找不到 18

r

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

标签 统计

r ×5

data.table ×3

arrays ×1

rstudio ×1