我想创建一个条形图,其中条形按高度排序,而不是按类别按字母顺序排列.当我加载的唯一包是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) 参考Crashing R在特定数据集上调用`write.table`这个问题时,我可以通过在一个会话中保存一个大的数据,在Windows-64bit上几乎 "可靠地"崩溃64位.当我说差不多时,一旦它发生(当向IT中的一个人展示崩溃时!)我得到了消息R --vanilladata.table
Error in .External2(C_writetable, x, file, nrow(x), p, rnames, sep, eol, :
'getCharCE' must be called on a CHARSXP
Run Code Online (Sandbox Code Playgroud)
在上述问题中引用.
要崩溃RI只需要保存(DT,"datatablefile.RData")
然后在另一个可能的R会议中--vanilla,我只是说......
load("datatablefile.RData")
write.csv(DT, file='datatablefile.csv')
Run Code Online (Sandbox Code Playgroud)
然后会在一两分钟后崩溃.请特别注意,如果我说它不会崩溃
load("datatablefile.RData")
library(data.table)
write.csv(DT, file='datatablefile.csv')
Run Code Online (Sandbox Code Playgroud)
当我说出类似的话
library(data.table)
N <- 1000
DT <- data.table(id=1:N, name=sample(letters, N, replace=TRUE))
save(DT, file='dttest.RData')
Run Code Online (Sandbox Code Playgroud)
然后在另一个会话中
load('dttest.RData')
write.csv(DT, 'dttest.csv')
Run Code Online (Sandbox Code Playgroud)
我没有崩溃......
有可能与之相关的建议rbindlist(),所以
library(data.table)
N <- 10000000
DT1 <- data.table(id=1:N, name=sample(letters, N, replace=TRUE))
DT2 <- data.table(id=1:N, …Run Code Online (Sandbox Code Playgroud)