小编dez*_*000的帖子

数据未从R中的命名空间导出

我已经在我的笔记本电脑上设置并定期更新我的R包到GitHub,跟随Hadley关于Devtools,Roxygen2等的大量文档.昨天我决定使用我的主PC,现在我正在寻求将更改推送到GitHub.输入后我收到以下错误document():

Error: 'Adult_Females' is not an exported object from 'namespace:gbm.auto'
Run Code Online (Sandbox Code Playgroud)

Adult_Females是/ Data中第一个数据文件的名称.根据这个(向下滚动到'数据')

"生活在数据中的文件/不使用通常的命名空间机制,不需要导出."

那么......一个人要做什么?我没有以任何方式编辑Adult_Females,我编辑的R脚本没有引用它.我怀疑是这个错误会弹出所有的数据文件,而这恰好是第一个,但这是猜想.

提前致谢.install_github("SimonDedman/gbm.auto")如果你想看看.

namespaces r github devtools roxygen2

9
推荐指数
2
解决办法
2364
查看次数

R:如何在ggplot中手动设置分箱色标?

我正在尝试为 ggplot 点图设置色标,划分区域:不适合、适合、理想、适合、不适合。在你的标准 ggplot 代码包装器中,我尝试过gradient2

scale_colour_gradient2(low = "grey",
                       mid = "red",
                       high = "grey",
                       midpoint = 25) +
Run Code Online (Sandbox Code Playgroud)

梯度2

gradientn;

scale_colour_gradientn(colours = rev(rainbow(5)),
                       breaks = seq(0, 30, by = 5),
                       limits = c(0, 30),
                       labels = as.character(seq(0, 30, by = 5))) +
Run Code Online (Sandbox Code Playgroud)

梯度n

stepsn,

scale_colour_stepsn(colours = c("grey", "blue", "red", "blue", "grey"),
                    values = scales::rescale(c(0, 22, 25, 26, 29, 40))) +
Run Code Online (Sandbox Code Playgroud)

步数

binned

scale_colour_binned(type = "viridis",
                      breaks = c(22, 25, 26, 29),
                      limits = c(0, 40),
                      guide = guide_coloursteps(even.steps …
Run Code Online (Sandbox Code Playgroud)

r colors scale ggplot2

8
推荐指数
2
解决办法
9175
查看次数

(R) IF 语句:如果为 FALSE,则停止并发出警告,否则继续

我正在创建一个函数,在它执行任何困难的操作之前,我需要它检查“样本”数据集中列出的所有列名称是否也存在于“网格”数据集中(该函数将一个映射到另一个) 。

all(names(samples[expvar]) %in% names(grids))
Run Code Online (Sandbox Code Playgroud)

这是这样做的:all() 中的代码询问“samples”中列的列表(“expvar”)中的所有名称是否也是“grids”中的名称。length=3正确的输出expvar将是TRUE TRUE TRUE. 'all' 询问是否全部为 TRUE,因此此处的输出为 TRUE。我想做一个 IF 语句,如下所示:

if(all(names(samples[expvar]) %in% names(grids)) = FALSE) {stop("Not all expvar column names found as column names in grids")}
Run Code Online (Sandbox Code Playgroud)

不需要别的,它会继续下去。问题是 '= FALSE' 是多余的,因为 all() 是一个逻辑上可评估的语句......是否有一个“继续”函数,例如

if(all(etc)) CARRYON else {stop("warning")}
Run Code Online (Sandbox Code Playgroud)

或者,有人能想出一种方法来重组它以使其发挥作用吗?

unit-testing r

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

带开发工具的R github软件包:警告未知宏'\ item'

我在RStudio&的帮助下制作了一个devtools用于命名空间的包,在手册页中创建了Description&Roxygen2。这很好用,我最近添加的帮助页面也起作用。我决定添加作者姓名,电子邮件和一些详细信息。最初,通过手动编辑手册页文件(BAD),然后编辑R脚本Roxygen2零件并使用以下命令将更改推送到Rm文件中:document()

但是:当我安装我的软件包时

devtools::install_github('SimonDedman/gbm.auto')
Run Code Online (Sandbox Code Playgroud)

我收到以下警告:

Warning: /tmp/RtmpNladba/devtools27303e05b1fc/SimonDedman-gbm.auto-dbe3cb0/man/gbm.valuemap.Rd:35: unknown macro '\item'
Warning: /tmp/RtmpNladba/devtools27303e05b1fc/SimonDedman-gbm.auto-dbe3cb0/man/gbm.valuemap.Rd:37: unknown macro '\item'
Warning: /tmp/RtmpNladba/devtools27303e05b1fc/SimonDedman-gbm.auto-dbe3cb0/man/gbm.valuemap.Rd:39: unknown macro '\item'
Warning: /tmp/RtmpNladba/devtools27303e05b1fc/SimonDedman-gbm.auto-dbe3cb0/man/gbm.valuemap.Rd:41: unknown macro '\item'
Warning: /tmp/RtmpNladba/devtools27303e05b1fc/SimonDedman-gbm.auto-dbe3cb0/man/gbm.valuemap.Rd:43: unknown macro '\item'
Warning: /tmp/RtmpNladba/devtools27303e05b1fc/SimonDedman-gbm.auto-dbe3cb0/man/gbm.valuemap.Rd:45: unknown macro '\item'
Warning: /tmp/RtmpNladba/devtools27303e05b1fc/SimonDedman-gbm.auto-dbe3cb0/man/gbm.valuemap.Rd:47: unknown macro '\item'
Warning: /tmp/RtmpNladba/devtools27303e05b1fc/SimonDedman-gbm.auto-dbe3cb0/man/gbm.valuemap.Rd:49: unknown macro '\item'
Warning: /tmp/RtmpNladba/devtools27303e05b1fc/SimonDedman-gbm.auto-dbe3cb0/man/gbm.valuemap.Rd:51: unexpected section header '\value'
Warning: /tmp/RtmpNladba/devtools27303e05b1fc/SimonDedman-gbm.auto-dbe3cb0/man/gbm.valuemap.Rd:55: unexpected section header '\description'
Warning: /tmp/RtmpNladba/devtools27303e05b1fc/SimonDedman-gbm.auto-dbe3cb0/man/gbm.valuemap.Rd:65: unexpected section header '\examples'
Warning: /tmp/RtmpNladba/devtools27303e05b1fc/SimonDedman-gbm.auto-dbe3cb0/man/gbm.valuemap.Rd:69: unexpected END_OF_INPUT '
'
Run Code Online (Sandbox Code Playgroud)

这些项目只是简单的@param参数,我没有改变,看起来很好,以前也可以使用。同上的value/ description/ examples参数,这些都是标准的(但可能是下游的问题,一旦上游问题是固定的,这将得到解决)。 …

documentation r github devtools package

5
推荐指数
3
解决办法
1537
查看次数

使用rep()创建列表

这可能很容易,但我一直在尝试并且未能找到解决方案,而且我认为我正试图在圆孔中安装方形钉lapply等.

我有一个函数,其中一个子函数将调用编号列表对象.数字将在一个循环中因此改变,数字和循环大小取决于用户值,所以我不知道它会是什么.如果用户没有输入其中一个变量的矢量值列表,我需要设置一个默认值.

子功能是期望的,例如c(2,6) 子功能当前循环8次,所以我需要一个八次的列表c(2,6).但是:object = as.list(rep(c(2,6),8))得到16个单个数字的列表:2 6 2 6 2 6 2 6依此类推.

任何想法我如何强制R创建例如8个向量的列表,而不是例如16个单个数字?我试过了,drop=0但没有帮助,我正在努力探索如何lapply开始工作.

r list lapply rep

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

对列表列进行汇总,获取第一个值(以 dplyr 表示)

我有一个大数据框,其中有一些半重复的条目,我试图通过dplyr::summarise. 这适用于数字列、字符列和逻辑列,但不适用于列表列。

mydata <- tibble(A = c(1,1,2,2,3,3),
                 B = c(1,NA,4,5,7,7),
                 C = list(1:3, 1:3, 2:4, 2:4, 3:6, 3:6))

dedupedData <- mydata %>%
  group_by(A) %>%
  summarise(across(where(is.numeric), mean, na.rm = TRUE))
Run Code Online (Sandbox Code Playgroud)

按预期工作;

dedupedData <- mydata %>%
  group_by(A) %>%
  summarise(across(where(is.numeric), mean, na.rm = TRUE),
            across(where(is.list), first))
Run Code Online (Sandbox Code Playgroud)

失败与我的数据集不同。上面通过分散 C 的范围来创建重复的行数,即 A1 组获得 1:3,A2 获得 2:4,A3 获得 3:6。对于我的数据:

dedupedData <- mydata %>%
  group_by(A, B) %>%
  summarise(across(where(is.numeric), mean, na.rm = TRUE),
            across(where(is.character), first),
            across(where(is.logical), first),
            across(where(is.POSIXct), first),
            across(where(is.list), first))
Run Code Online (Sandbox Code Playgroud)

一直有效,直到我包含 is.list 行,然后它会中断:

错误:summarise() …

r summary dplyr across

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

R: dplyr::filter 中的 IF 语句需要 ELSE,否则会失败?

根据其他答案,可以if在管道和函数中包含语句dplyr。然而对于filter,似乎需要使用 anelse而不仅仅是 an if,否则filter将不返回任何内容,调用错误:

没有适用于“filter_”的方法应用于类“NULL”的对象

恕我直言,这是相当误导的,因为我没有使用filter_也没有亲自向管道提供 NULL 类对象。最小代表:

data(mtcars)
a <- 1
mtcars %>% filter(if (a == 1) cyl == 6) # if in filter works
a <- NA
mtcars %>% filter(if (is.na(a)) cyl == 6) # is.na in if in filter works if it evaluates to true
a <- 4
mtcars %>% filter(if (!is.na(a)) cyl == a) # !is.na works if it evaluates to …
Run Code Online (Sandbox Code Playgroud)

if-statement r filter dplyr

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

加载了dplyr的函数找不到“%&lt;&gt;%”

[免责声明:类似的问题已经问了很多遍了。我不认为这与我刚刚阅读的许多线程相同。]

我做了:

library(dplyr)
colnames(LarvalSamples) %<>% 
  stringr::str_remove_all("_log") %>% 
  stringr::str_replace_all("Sea_Level", "Sea_Level_Height") %>% #sealevel, sealion, chinook, chl
  stringr::str_replace_all("SeaLion", "Sea_lion") %>% 
  stringr::str_replace_all("Chinook_Salmon", "Salmon") %>% 
  stringr::str_replace_all("Chlorophyll_a", "Chlorophyll_A")
Run Code Online (Sandbox Code Playgroud)

工作正常,没有消息,按预期/期望输出。然后,我复制/粘贴了前两行,除了终端管道:

colnames(LarvalSamples) %<>%
  stringr::str_remove_all("_log")
Run Code Online (Sandbox Code Playgroud)

colnames(LarvalSamples)中的错误%<>%stringr :: str_remove_all(“ _ log”):找不到函数“%<>%”

我意识到这里还有其他关于找不到函数的文章,但是dplyr仅在上面两行中就已加载并处理了更多代码。发生这种情况时,中没有任何"_log"模式,colnames但是我尝试了一个不同的字符模式,该字符模式确实存在并且失败了,因此这是消除错误的一个潜在来源。任何想法/猜测都表示赞赏,这比问题tbh更像是一个错误,但是如果需要的话,在将其提升到更高层次之前,最好能有敏锐的目光。谢谢。

> sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 17134)

Matrix products: default

locale:
[1] LC_COLLATE=English_United Kingdom.1252  LC_CTYPE=English_United Kingdom.1252   
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C                           
[5] LC_TIME=English_United Kingdom.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods …
Run Code Online (Sandbox Code Playgroud)

r pipe dplyr

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