相关疑难解决方法(0)

重新排序因子会产生不同的结果,具体取决于加载的包

我想创建一个条形图,其中条形按高度排序,而不是按类别按字母顺序排列.当我加载的唯一包是ggplot2时,这工作正常.但是,当我加载一些包并运行创建,排序和绘制数据框的相同代码时,条形图已经恢复为按字母顺序排序.

我每次使用都检查了数据帧str(),结果发现数据框的属性现在不同了,即使我每次都运行相同的代码.

我的代码和输出如下所示.任何人都可以解释不同的行为吗?为什么加载一些显然不相关的包(在我所使用的所有函数似乎都没有被新加载的包掩盖的意义上无关)会改变运行transform()函数的结果?

案例1:刚加载ggplot2

library(ggplot2)

group = c("C","F","D","B","A","E")
num = c(12,11,7,7,2,1)
data = data.frame(group,num)
data1 = transform(data, group=reorder(group,-num))

> str(data1)
'data.frame':   6 obs. of  2 variables:
 $ group: Factor w/ 6 levels "C","F","B","D",..: 1 2 4 3 5 6
  ..- attr(*, "scores")= num [1:6(1d)] -2 -7 -12 -7 -1 -11
  .. ..- attr(*, "dimnames")=List of 1
  .. .. ..$ : chr  "A" "B" "C" "D" ...
 $ num  : num  12 11 7 7 2 1 …
Run Code Online (Sandbox Code Playgroud)

namespaces r masking operator-precedence

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

重置R实例

是否可以重置R的实例?

例如.如果我使用了命令

x <- 1:10
plot(x, -x)
Run Code Online (Sandbox Code Playgroud)

因此用x变量污染了系统.在这种状态下,我可以再恢复到一个干净的状态,而无需关闭关闭R和再次启动呢?

r

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

在受限制的环境中使用`rmarkdown :: render`

我有以下Rmd文件test.Rmd:

---
title: "test"
output: html_document
---

```{r}
print(y)
```

```{r}
x <- "don't you ignore me!"
print(x)
```
Run Code Online (Sandbox Code Playgroud)

我想以下面的方式调用render:

render('test.Rmd', output_format = "html_document",
        output_file = 'test.html',
        envir = list(y="hello"))
Run Code Online (Sandbox Code Playgroud)

但它失败了:

processing file: test.Rmd
  |................                                                 |  25%
  ordinary text without R code

  |................................                                 |  50%
label: unnamed-chunk-1
  |.................................................                |  75%
  ordinary text without R code

  |.................................................................| 100%
label: unnamed-chunk-2
Quitting from lines 11-13 (test.Rmd) 
Error in print(x) : object 'x' not found
Run Code Online (Sandbox Code Playgroud)

第一块块很好,所以有些东西有效.如果我y在我的全局环境中定义我可以在没有envir …

r knitr r-markdown r-environment

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

加载,分离,重新加载异常

我正在附加,分离和重新附加RODBCdata.table.当我按此顺序使用这些包执行此过程时,我收到以下错误:

Error : .onLoad failed in loadNamespace() for 'data.table', details:
  call: address(x)
  error: object 'Caddress' not found
Run Code Online (Sandbox Code Playgroud)

我正在使用这些软件包的最新版本.这是我的初始会话信息:

R version 3.1.0 (2014-04-10)
Platform: i386-w64-mingw32/i386 (32-bit)

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

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

pkgs <- c('RODBC', 'data.table') # Note, c('data.table', 'RODBC') will work
for (pkg in pkgs) library(pkg, character.only=TRUE)
for (pkg in paste0('package:', pkgs)) detach(pkg, unload=TRUE, character.only=TRUE)
for (pkg …
Run Code Online (Sandbox Code Playgroud)

r rodbc data.table

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

如何在不重启R的情况下禁用包?

可能重复:
如何在不重新启动R的情况下卸载软件包?

要将包装入R,我们可以去library(.)require(.).如何在编码会话期间禁用包.我想要一些与之相反的东西require(.).

r package

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

如何在[R]中确定命名空间导入顺序

我需要清理一个R实例,使其恢复到启动时的处女状态.到目前为止,我正在做的是:

在启动时,记录加载的包和名称空间

original_packages <- grep('^package:', search(), value = TRUE)
original_namespaces <- loadedNamespaces()
Run Code Online (Sandbox Code Playgroud)

当我需要刷新实例时,分离每个在启动时不存在的已加载包:

for (pkg in grep('^package:', search(), value = TRUE)) {
    if (! pkg %in% original_packages){
        detach(pkg, unload=TRUE, force=TRUE, character.only=TRUE)
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果我装一个包和一帮导入的命名空间,如GGPLOT2的,这些空间中保持加载,我必须卸载它们进口的顺序,从高层次的下降.只是盲目地卸载它们不起作用,因为我得到"命名空间'x'由'y'导入,'z'因此无法卸载"错误.

这是可重复的例子:

original_packages <- grep('^package:', search(), value = TRUE)
original_namespaces <- loadedNamespaces()

library(ggplot2)
library(plyr)

loadedNamespaces()

for (pkg in grep('^package:', search(), value = TRUE)) {
    if (! pkg %in% original_packages){
        detach(pkg, unload=TRUE, force=TRUE, character.only=TRUE)
    }
}

for (ns in loadedNamespaces()) {
    if (! ns %in% original_namespaces){
        unloadNamespace(ns)
    } …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

R中的命名空间和通用函数

这个问题上有所跟进这个问题。考虑下面的例子

set.seed(1)
x <- cumsum(rnorm(10))
y <- stats::arima(x, order = c(1, 0, 0))
length(stats::fitted(y))
[1] 0
Run Code Online (Sandbox Code Playgroud)

So far so good: zero is returned because R does not now how to use stats::fitted on an object of class Arima.

Next in my code, I need one function from the forecast package. I do not attach the package, I just load it using the ::notation. In my code below I will load it directly using requireNamespace.

requireNamespace("forecast", …
Run Code Online (Sandbox Code Playgroud)

namespaces r

6
推荐指数
2
解决办法
218
查看次数