相关疑难解决方法(0)

提取dplyr tbl列作为向量

是否有更简洁的方法将dplyr tbl的一列作为向量,从具有数据库后端的tbl(即数据帧/表不能直接是子集)?

require(dplyr)
db <- src_sqlite(tempfile(), create = TRUE)
iris2 <- copy_to(db, iris)
iris2$Species
# NULL
Run Code Online (Sandbox Code Playgroud)

这太容易了,所以

collect(select(iris2, Species))[, 1]
# [1] "setosa"     "setosa"     "setosa"     "setosa"  etc.
Run Code Online (Sandbox Code Playgroud)

但它似乎有点笨拙.

r lazy-evaluation collect dplyr

150
推荐指数
7
解决办法
6万
查看次数

如何在 tibble 上应用 diff 函数

我想将差异应用于数据框列,通过其名称访问它。我所做的如下:

\n\n
abscissa <- "distance"\ndata.op[, abscissa]\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到这个输出

\n\n
# A tibble: 15 x 1\n   distance\n        <dbl>\n 1     0.0426\n 2     0.0409\n 3     0.0412\n 4     0.0406\n 5     0.0406\n 6     0.0407\n 7     0.0402\n 8     0.0403\n 9     0.103 \n10     0.0402\n11     0.0395\n12     0.0407\n13     0.0406\n14     0.0405\n15     0.0404\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我简单地尝试:

\n\n
 diff(data.op[, abscissa])\n
Run Code Online (Sandbox Code Playgroud)\n\n

但输出是:

\n\n
 # A tibble: 15 x 0\n
Run Code Online (Sandbox Code Playgroud)\n\n

我也尝试data.op[, abscissa] %>% diff过并且data.op %>% select(abscissa) %>% diff获得相同的零列结果。

\n\n

但是,如果我这样做

\n\n
diff(as.data.frame(data.op)[, abscissa])\n
Run Code Online (Sandbox Code Playgroud)\n\n

有用:

\n\n
[1] -0.00169560  0.00024120 …
Run Code Online (Sandbox Code Playgroud)

r

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

标签 统计

r ×2

collect ×1

dplyr ×1

lazy-evaluation ×1