小编dr_*_*nch的帖子

使用本机管道 |> 在基本 R 中选择多列的方法?

使用本机管道 |> 在基本 R 中选择数据帧的多列有哪些好方法?(即,没有 tidyverse/dplyr 来减少外部依赖性)。

如果我们有数据框

dtf <- data.frame(a = 1:3, b = 4:6, c = 7:9)
Run Code Online (Sandbox Code Playgroud)

然后我们可以选择列 b 和 c

> dtf[c("b", "c")]
  b c
1 4 7
2 5 8
3 6 9
Run Code Online (Sandbox Code Playgroud)

在 tidyverse 中使用本机管道执行此操作的一种优雅方法是

> dtf |> dplyr::select(b, c)
  b c
1 4 7
2 5 8
3 6 9
Run Code Online (Sandbox Code Playgroud)

我对原生管道的最佳基础 R 尝试是

> dtf |> subset(select = c("b", "c"))
  b c
1 4 7
2 5 8
3 6 9
Run Code Online (Sandbox Code Playgroud)

更简洁(但失败的尝试)是

> dtf …
Run Code Online (Sandbox Code Playgroud)

r dataframe dplyr

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

Rd 创建但未导出

我正在记录一个内部的非导出函数。@export即使文档中没有标签,roxygen2 也会创建一个 Rd 文件。roxygen2 为以下文档创建了一个 Rd 文件。我缺少什么?

    #' Check validity of a
    #' @param a A logical value
    arg_check_a = function(a) {
      if (!is.logical(a)) {
        stop("a must be a logical value")
      }
    }
Run Code Online (Sandbox Code Playgroud)

r roxygen2

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

分配 n NumericMatrix 的 Rcpp 列表

有没有办法分配一个长度为 n 的 Rcpp List,其中 List 的每个元素都会填充一个 NumericMatrix,但是每个 NumericMatrix 的大小可以改变?

我有一个使用 std::list 和 push_back() 执行此操作的想法,但列表的大小可能非常大,我想避免从函数返回时创建列表的额外副本的开销。

下面的 R 代码给出了我希望做什么的想法:

myvec = function(n) {
  x = vector("list", n)
  for (i in seq_len(n)) {
    nc = sample(1:3, 1)
    nr = sample(1:3, 1)
    x[[i]] = matrix(rbinom(nc * nr, size = 1, prob = 0.5),
                    nrow = nr, ncol = nc)
  }
  x
}
Run Code Online (Sandbox Code Playgroud)

这可能会导致类似的结果:

> myvec(2)
[[1]]
     [,1]
[1,]    0
[2,]    1

[[2]]
     [,1] [,2] [,3]
[1,]    0    1    0
[2,]    0    1    1 …
Run Code Online (Sandbox Code Playgroud)

r rcpp

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

标签 统计

r ×3

dataframe ×1

dplyr ×1

rcpp ×1

roxygen2 ×1