是否有任何简单的方法按降序对数组进行排序,就像它们在Arrays类中按升序排序一样?
或者我必须停止懒惰并自己这样做:[
我在Windows上运行R,而不是管理员.当我安装包时,以下命令不起作用:
> install.packages("zoo")
Installing package(s) into ‘C:/Program Files/R/R-2.15.2/library’
(as ‘lib’ is unspecified)
Warning in install.packages :
'lib = "C:/Program Files/R/R-2.15.2/library"' is not writable
Run Code Online (Sandbox Code Playgroud)
要安装软件包,我必须指定一个库位置:
install.packages("zoo", lib="C:/software/Rpackages")
Run Code Online (Sandbox Code Playgroud)
要加载包,我还必须指定库位置:
library("zoo", lib.loc="C:/software/Rpackages")
Run Code Online (Sandbox Code Playgroud)
所有这一切C:/software/Rpackages都没问题,但我想知道是否可以以某种方式添加到库路径,因此不必每次都输入它.
当我在网上搜索时,我发现一种方法是编辑Rprofile.site文件并添加行
.libPaths("C:/software/Rpackages")
Run Code Online (Sandbox Code Playgroud)
但是,在执行此操作并启动RStudio之后,这就是我得到的输出
> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library"
Run Code Online (Sandbox Code Playgroud)
在.libPaths我加入命令Rprofile.site似乎并没有有任何影响!为什么会这样?或者更重要的是,如何解决问题以便我可以在不输入库位置的情况下安装和加载包?
注意:如果我启动RStudio,.libPaths()命令似乎按预期工作
.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages" "C:/Program Files/R/R-2.15.2/library"
Run Code Online (Sandbox Code Playgroud)
这不奇怪吗?
我正在尝试绘制多个绘图,使用ggplot2它们进行排列grid.arrange().由于我设法找到某人描述我遇到的确切问题,因此我引用了链接中的问题描述:
当我使用ggsave()后grid.arrange(),即
Run Code Online (Sandbox Code Playgroud)grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) ggsave("sgcirNIR.jpg")
我不保存网格图,而是保存最后一个ggplot.是否有任何方法可以通过grid.arrange()使用
ggsave()或类似的方式实际保存绘图?除了使用旧的方式
Run Code Online (Sandbox Code Playgroud)jpeg("sgcirNIR.jpg") grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) dev.off()
相同的链接提供以下解决方案:
require(grid)
require(gridExtra)
p <- arrangeGrob(qplot(1,1), textGrob("test"))
grid.draw(p) # interactive device
ggsave("saving.pdf", p) # need to specify what to save explicitly
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何使用以下代码ggsave()保存grid.arrange()调用的输出,该代码取自链接:
library(ggplot2)
library(gridExtra)
dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
p1 <- qplot(carat, price, data=dsamp, colour=clarity)
p2 <- qplot(carat, price, data=dsamp, colour=clarity, geom="path")
g_legend<-function(a.gplot){
tmp <- ggplot_gtable(ggplot_build(a.gplot))
leg <- which(sapply(tmp$grobs, function(x) x$name) == …Run Code Online (Sandbox Code Playgroud) 我知道该sink()函数可用于将R输出转移到文件中,例如
sink('sink-closing.txt')
cat('Hello world!')
sink()
Run Code Online (Sandbox Code Playgroud)
是否有一个简单的命令来关闭所有未完成的接收器?
下面,我详细说明我的问题.
假设我的R脚本sink()在R脚本中打开一个,但是在脚本关闭之前R脚本中出现错误sink().我可能多次运行R脚本,试图修复错误.最后,我想关闭所有接收器并打印到控制台.我该怎么办?
最后,为了具体,我提供了一个MWE来说明我面临的问题.
首先,我写了一个R脚本sink-closing.R,里面有错误.
sink('sink-closing.txt')
foo <- function() {
cat(sprintf('Hello world! My name is %s\n',
a.variable.that.does.not.exist))
}
foo()
sink()
Run Code Online (Sandbox Code Playgroud)
接下来,我source多次使用R脚本,在我尝试查找并修复错误时错误地说了3次.
> source('~/Dropbox/cookbook/r-cookbook/sink-closing.R')
Error in sprintf("Hello world! My name is %s\n", a.variable.that.does.not.exist) :
object 'a.variable.that.does.not.exist' not found
Run Code Online (Sandbox Code Playgroud)
现在,假设我正在调试R脚本并想要打印到控制台.我可以sink()多次打电话来关闭早期的接收器.如果我调用它3次,那么我最终可以像以前一样打印到控制台.但我如何知道需要关闭多少水槽?
逐个元素对两个数组求和的最简单方法是什么?
我知道您可以使用for如下循环:
int[] a = {0, 1, 2};
int[] b = {3, 4, 5};
int[] c = new int[a.length];
for (int i = 0; i < a.length; ++i) {
c[i] = a[i] + b[i];
}
Run Code Online (Sandbox Code Playgroud)
但是在MATLAB这样的语言中,你可以通过编写来逐个元素的数组求和c = a + b.在Java中有一种简单的方法吗?
想到的方法是使用Apache Commons Math中的RealVector类,但该方法相当冗长.
我想计算数据帧中一个因子的出现次数.例如,要计算以下代码中给定类型的事件数:
library(plyr)
events <- data.frame(type = c('A', 'A', 'B'),
quantity = c(1, 2, 1))
ddply(events, .(type), summarise, quantity = sum(quantity))
Run Code Online (Sandbox Code Playgroud)
输出如下:
type quantity
1 A 3
2 B 1
Run Code Online (Sandbox Code Playgroud)
但是,如果我知道,有三种类型的事件A,B并且C,我也希望看到计数C这是0?换句话说,我希望输出为:
type quantity
1 A 3
2 B 1
3 C 0
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?感觉应该有一个函数被定义为在某个地方执行此操作.
以下是关于如何解决这个问题的两个不太好的想法.
想法#1:我知道我可以通过使用一个for循环来做到这一点,但我知道广泛说如果你使用for循环R,那么你做错了,必须有一个更好的方法来做到这一点.
想法#2:在原始数据框中添加虚拟条目.这个解决方案有效,但感觉应该有一个更优雅的解决方案.
events <- data.frame(type = c('A', 'A', 'B'),
quantity = c(1, 2, 1))
events <- rbind(events, data.frame(type = …Run Code Online (Sandbox Code Playgroud) 我正在绘制散点图,其中每个点具有与观察数量相对应的不同大小.下面是代码和图像输出的示例:
rm(list = ls())
require(ggplot2)
mydf <- data.frame(x = c(1, 2, 3),
y = c(1, 2, 3),
count = c(10, 20, 30))
ggplot(mydf, aes(x = x, y = y)) + geom_point(aes(size = count))
ggsave(file = '2013-11-25.png', height = 5, width = 5)
Run Code Online (Sandbox Code Playgroud)

这是相当不错的,但有没有办法增加所有点的大小?特别是,就目前而言,"10"的点太小,因此很难看到.
当我跑步时git push origin master,我看到了一张非同寻常的ASCII图片.我跑过git push几百次,之前从未见过这个.这有什么解释吗?
$ git push origin master
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 1.05 KiB | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote:
remote: ++++ ++++
remote: +++++++ +++++++
remote: +++++++++++++++++++++++++++++
remote: +++++++++++++++++++++
remote: +++++++
remote: +++ +++
remote: ++++++ +++++ ++++++
remote: ++++++ +++++ ++++++
remote: +++++++ +++ +++++++
remote: ++++++++ + ++++++++ …Run Code Online (Sandbox Code Playgroud) 我知道可以将a Float64转换为Int64
使用该convert函数.不幸的是,它在应用于convert二维阵列时不起作用.
julia> convert(Int64, 2.0)
2
julia> A = [1.0 2.0; 3.0 4.0]
2x2 Array{Float64,2}:
1.0 2.0
3.0 4.0
julia> convert(Int64, A)
ERROR: `convert` has no method matching convert(::Type{Int64}, ::Array{Float64,2
})
in convert at base.jl:13
Run Code Online (Sandbox Code Playgroud)
如何将2-D浮点数组转换为2-D整数数组?
我可以使用以下代码来完成它,这有点冗长,但它的工作原理.我希望有一个更简单的方法来做到这一点.
julia> A = [1.0 2.0; 3.0 4.0]
2x2 Array{Float64,2}:
1.0 2.0
3.0 4.0
julia> B = Array(Int64, 2, 2)
2x2 Array{Int64,2}:
4596199964293150115 4592706631984861405
4604419156384151675 0
julia> for i = 1:2
for j = 1:2
B[i,j] …Run Code Online (Sandbox Code Playgroud) 我试图在一个R文件中定义泛型方法,并在另一个R文件中实现它们.但是我得到一个我不明白的错误.
问题:
内容BuyProbabilityGeneric.R:
setGeneric("FirstTimeBuyProbability",
valueClass = "numeric",
function(object, period, price) {
standardGeneric("FirstTimeBuyProbability")
})
setGeneric("ReturningBuyProbability",
valueClass = "numeric",
function(object, period1, price1, period2, price2) {
standardGeneric("ReturningBuyProbability")
})
Run Code Online (Sandbox Code Playgroud)
内容BuyProbabilityBasic.R:
setClass("BuyProbabilityBasic", representation(
full.price.probability = "numeric",
elasticity = "numeric"))
setMethod("FirstTimeBuyProbability",
signature(object = "BuyProbabilityBasic",
period = "numeric", price = "numeric"),
function(object, t, price) {
full.price.probability * price^elasticity
})
setMethod("ReturningBuyProbability",
signature(object = "BuyProbabilityBasic",
period1 = "numeric", price1 = "numeric",
period2 = "numeric", price2 = "numeric"),
function(object, period1, price1, period2, price2) { …Run Code Online (Sandbox Code Playgroud)