小编Sam*_*rke的帖子

检查现有CRAN包中是否使用了函数名称

我正在创建一个我计划提交给CRAN的R包.如何检查我的任何函数名称是否与CRAN上已有的函数名称冲突?在我的软件包上市之前,更改函数名称仍然很容易,我希望成为一个好公民,尽可能避免冲突.

例如,包MASS和dplyr都具有称为"选择"的功能.我想避免那种碰撞.

r cran

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

调用 tidyselect-using 函数时指定 dots 参数,无需指定前面的参数

这是我在包中使用...参数并tidyselect选择变量的函数的简化版本:

# this toy function just selects the ... variables
foo <- function(dat = mtcars, ...){
  expr <- rlang::expr(c(...))
  cols_to_select <- tidyselect::eval_select(expr, data = dat)
  dplyr::select(dat, all_of(cols_to_select))
}
Run Code Online (Sandbox Code Playgroud)

这有效: foo(mtcars, cyl)

但是我的实际函数在参数之前有更多前面的...参数,所有参数都有默认值。如果我使用这些默认值调用我的函数并将值传递给....

这就是我想要的 - 假设dat = mtcars- 但它不起作用:

foo(... = cyl)

错误:名称不得采用...或形式..j

我可以修改函数或调用以允许直接指定...吗?

r rlang tidyselect

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

将列表文件取消列表到多个数据帧

我创建了一个包含72个元素的R列表.我如何将此文件取消归档到72个具有每个元素名称的单个数据帧?

这是一个例子:

L <- list(data.frame(matrix(1:4,2,2)),
          data.frame(matrix(9:12,2,2)),
          data.frame(matrix(5:8,2,2)))
names(L)<-c("a","b","c")
Run Code Online (Sandbox Code Playgroud)

如何获得三个数据帧a,b和c?

r dataframe

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

当训练集具有比测试集更多不同的因子水平时,randomForest不起作用

当我尝试在比我的训练数据更少的因子水平的新测试数据上测试我训练的模型时,predict()返回以下内容:

新数据中的预测变量类型与训练数据的类型不匹配.

我的训练数据有一个具有7个因子水平的变量,我的测试数据具有6个因子水平的相同变量(训练数据中的所有6个ARE).

当我添加包含"缺失"第7个因子的观察时,模型会运行,所以我不确定为什么会发生这种情况,甚至不知道它背后的逻辑.

我可以看看测试集是否有更多/不同的因子水平,然后randomForest会窒息,但为什么在训练集有"更多"数据的情况下呢?

r random-forest

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

使用 read_excel 的错误消息“错误:std::bad_alloc”

我正在尝试使用包中的read_excel()函数打开 Excel 文件readxl。但我不知道如何指定 Excel 文件的路径。

当我按照答案中给出的步骤输入文件路径时,我收到错误消息:

“错误:std::bad_alloc”。

r readxl

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

在网页抓取时只有小对象的高R内存使用率

我正在抓一个网站,并从for-loop调用我的抓取功能.在循环的4,000次迭代中,我的计算机警告我RStudio使用了太多的内存.但是在使用转义键断开循环之后,我在R环境中看不到任何大对象.

我尝试了这两个 帖子的提示,但他们没有透露原因.当我mem_used()pryr包裹打电话时,我得到:

2.3 GB

这与Windows任务管理员最初所说的一致.它表示2.3 GB,然后在循环结束后十分钟内降至1.7 GB,在循环后二十分钟内降至1.2 GB. mem_used()继续说2.3 GB.

但根据lsos()上面链接的第一篇文章中的函数,我的R对象很小:

> lsos()
                       Type     Size  Rows Columns
all_raw              tbl_df 17390736 89485      12
all_clean            tbl_df 14693336 89485      15
all_no_PAVs          tbl_df 14180576 86050      15
all_no_dupe_names    tbl_df 13346256 79646      15
sample_in            tbl_df  1917128  9240      15
testdat              tbl_df  1188152  5402      15
username_res         tbl_df   792936  4091      14
getUserName        function   151992    NA      NA
dupe_names           tbl_df   132040  2802       3
time_per_iteration  numeric    65408  4073      NA
Run Code Online (Sandbox Code Playgroud)

这说我最大的对象是17 MB,不接近2.3 GB.我怎样才能找到内存使用的罪魁祸首并修复它?循环中是否存在逐渐占用内存的东西? …

memory r rvest

5
推荐指数
0
解决办法
395
查看次数

请注意R CRAN检查 - *检查顶级文件...注意如果没有安装'pandoc',则无法检查文件README.md

我正在检查我的R包提交CRAN,但有一个注意我无法摆脱.我用谷歌搜索它,但似乎这个注意不常见,因此我没有找到太多有用的信息.任何人都可以为我提供解决方案吗?以下是输出的一部分R CMD check --as-cran.

* using R version 3.2.0 (2015-04-16)
* using platform: x86_64-apple-darwin13.4.0 (64-bit)
* using session charset: UTF-8
* using option ‘--as-cran’
...
...
* checking DESCRIPTION meta-information ... OK
* checking top-level files ... NOTE
File README.md cannot be checked without ‘pandoc’ being installed.
* checking for left-over files ... OK
* checking index information ... OK
Run Code Online (Sandbox Code Playgroud)

r package cran pandoc

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

在dplyr中筛选专门包含特定值组合的组

给出如下表:

  id value
1  1     a
2  2     a
3  2     b
4  2     c
5  3     c
Run Code Online (Sandbox Code Playgroud)

我想过滤:

a)仅具有值a的id,即id 1.

b)共同包含a和b的id,即id 2.

数据:

data.frame(id = c(1,2,2,2,3), value = c("a", "a", "b", "c", "c"))
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

如何在没有 row.names / 行号的情况下打印 tibble

Tibbles 打印时使用行号作为行名称。请参阅1, 2下面的左边距:

tibble::as_tibble(mtcars)

# A tibble: 32 x 11
     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1  21       6  160    110  3.9   2.62  16.5     0     1     4     4
 2  21       6  160    110  3.9   2.88  17.0     0     1     4     4
Run Code Online (Sandbox Code Playgroud)

我可以在争论tibble:::print.tbl()或其他情况下禁止打印这些数字吗?我知道我可以使用:row.names = FALSE中的参数,但是我没有得到它作为小标题的所有其他不错的打印选项,它只是像常规 data.frame 一样打印。print.data.frameprint.data.frame(as_tibble(mtcars), row.names = FALSE)

我想保持输出与print.tbl()上面的输出相同,但没有行号。

r tibble

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

将文本读入data.frame,其中字符串值包含空格

当存在包含空间干扰的字符串值时,从打印的data.frame读取文本到data.frame的最简单方法是read.table什么?例如,此data.frame摘录不会造成问题:

     candname party elecVotes
1 BarackObama     D       365
2  JohnMcCain     R       173
Run Code Online (Sandbox Code Playgroud)

我可以将它粘贴到一个read.table没有问题的电话中:

dat <- read.table(text = "     candname party elecVotes
1 BarackObama     D       365
2  JohnMcCain     R       173", header = TRUE)
Run Code Online (Sandbox Code Playgroud)

但是如果数据包含带有这样的空格的字符串:

      candname party elecVotes
1 Barack Obama     D       365
2  John McCain     R       173
Run Code Online (Sandbox Code Playgroud)

然后read.table抛出一个错误,因为它将"Barack"和"Obama"解释为两个独立的变量.

r read.table

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

标签 统计

r ×10

cran ×2

dataframe ×1

dplyr ×1

memory ×1

package ×1

pandoc ×1

random-forest ×1

read.table ×1

readxl ×1

rlang ×1

rvest ×1

tibble ×1

tidyselect ×1