我想创建一个条形图,其中条形按高度排序,而不是按类别按字母顺序排列.当我加载的唯一包是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 …是否可以重置R的实例?
例如.如果我使用了命令
x <- 1:10
plot(x, -x)
因此用x变量污染了系统.在这种状态下,我可以再恢复到一个干净的状态,而无需关闭关闭R和再次启动呢?
我有以下Rmd文件test.Rmd:
---
title: "test"
output: html_document
---
```{r}
print(y)
```
```{r}
x <- "don't you ignore me!"
print(x)
```
我想以下面的方式调用render:
render('test.Rmd', output_format = "html_document",
        output_file = 'test.html',
        envir = list(y="hello"))
但它失败了:
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
第一块块很好,所以有些东西有效.如果我y在我的全局环境中定义我可以在没有envir …
我正在附加,分离和重新附加RODBC和data.table.当我按此顺序使用这些包执行此过程时,我收到以下错误:
Error : .onLoad failed in loadNamespace() for 'data.table', details:
  call: address(x)
  error: object 'Caddress' not found
我正在使用这些软件包的最新版本.这是我的初始会话信息:
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    
例
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 …可能重复:
如何在不重新启动R的情况下卸载软件包?
要将包装入R,我们可以去library(.)或require(.).如何在编码会话期间禁用包.我想要一些与之相反的东西require(.).
我需要清理一个R实例,使其恢复到启动时的处女状态.到目前为止,我正在做的是:
在启动时,记录加载的包和名称空间
original_packages <- grep('^package:', search(), value = TRUE)
original_namespaces <- loadedNamespaces()
当我需要刷新实例时,分离每个在启动时不存在的已加载包:
for (pkg in grep('^package:', search(), value = TRUE)) {
    if (! pkg %in% original_packages){
        detach(pkg, unload=TRUE, force=TRUE, character.only=TRUE)
    }
}
问题是,如果我装一个包和一帮导入的命名空间,如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)
    } …这个问题上有所跟进这个问题。考虑下面的例子
set.seed(1)
x <- cumsum(rnorm(10))
y <- stats::arima(x, order = c(1, 0, 0))
length(stats::fitted(y))
[1] 0
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", …r ×7
namespaces ×2
data.table ×1
ggplot2 ×1
knitr ×1
masking ×1
package ×1
r-markdown ×1
rodbc ×1