小编wus*_*978的帖子

ggplot2:调整图例中的符号大小

我该如何更改图例中符号的大小?我检查了文件,theme但没有找到答案.

这是一个例子:

library(ggplot2);library(grid)
set.seed(1000)
x <- 1:6
mu <- sin(x)
observed <- mu + rnorm(length(x), 0, 0.5*sd(mu))
data <- data.frame(
  t=rep(x, 2), 
  value=c(mu, observed) - min(mu, observed) + 0.5, 
  class = rep(c("mu", "observed"), each=length(x)))
mu <- data$value[1:length(x)]
observed <- data$value[1:length(x) + length(x)]
mu.min <- mu - 3 * 0.5 * sd(mu)
mu.max <- mu + 3 * 0.5 * sd(mu)
g <- ggplot(data=data)
g <- g + geom_point(aes(x=value, y=t, shape=class, size=24)) + scale_size(guide="none")
g <- g + scale_shape(name="", …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

用R中的列表替换参数

有时会有一个具有任意数量参数的函数.例如,bootstrapPage包的功能有光泽.如果我有一个data.frame并且我想为一行创建一个小部件,那么我还没有找到一种根据data.frame的行号传递参数数量的好方法.到目前为止,我生成脚本并使用诀窍eval(parse(text="..."))

事实上,传递给R中的函数的参数结构(键和值)类似于a list,所以我想知道是否有办法将参数作为R中的列表传递.

更具体地讲,如果我有一个函数f和一个列表argv,是有办法传递的对象argv,以f根据名字的匹配argv和自变量的名称f,并在位置argv和自变量的位置f

例如,让我们

f <- function(a, b) a + b
argv <- list(a=1, b=2)
Run Code Online (Sandbox Code Playgroud)

我应该如何传递argvf这相当于f(a=argv$a, b=argv$b)

或者如果我们有:

f <- function(a, b, ...) { # some codes }
argv <- list(a = 1, b = 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)

我应该如何传递argvf这相当于f(a=argv$a, b=argv$b, argv[[3]], argv[[4]], argv[[5]])

谢谢!

r argument-passing

8
推荐指数
1
解决办法
234
查看次数

如何在Rcpp中使用xts包的C api

xts-0.9-1包提供的x的xts_API不能直接在C++中使用.

例如,如果一个人写

#include <Rcpp.h>
extern "C" {
#include <xts.h>
}

using namespace Rcpp;

RcppExport SEXP get_xts_index(SEXP x, SEXP value) {
  BEGIN_RCPP

  return SET_xtsIndexClass(x, value);

  END_RCPP
}
Run Code Online (Sandbox Code Playgroud)

编译时会出现以下错误:

  • error: expected identifier before ‘)’ token
  • error: ‘install’ was not declared in this scope
  • error: ‘getAttrib’ was not declared in this scope
  • error: ‘setAttrib’ was not declared in this scope
  • error: ‘xts_IndexvalueSymbol’ was not declared in this scope

如何为C调用xts_API?

r rcpp xts

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

使用for循环在ggplot2中绘制单个图中的多行

我尝试在单个图中绘制多条线,如下所示:

y <- matrix(rnorm(100), 10, 10)
m <- qplot(NULL)
for(i in 1:10) {
    m <- m + geom_line(aes(x = 1:10, y = y[,i]))
}
plot(m)
Run Code Online (Sandbox Code Playgroud)

然而,似乎qplot会解析m过程中plot(m),其中i10,所以plot(m)只生产单一的线.

我期望看到的类似于:

plot(1,1,type='n', ylim=range(y), xlim=c(1,10))
for(i in 1:10) {
    lines(1:10, y[,i])
}
Run Code Online (Sandbox Code Playgroud)

其中应包含10个不同的行.

ggplot2办法做到这一点吗?

r ggplot2

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

基于函数返回的stl容器构造效率

我有一个返回stl容器的工厂函数:

const std::vector<int> f(...) {
    std::vector<int> retval;
    return retval;
}
Run Code Online (Sandbox Code Playgroud)

我想可以定义一个stl实例如下(没有错误):

const std::vector<int> stl_instance(f(...));
Run Code Online (Sandbox Code Playgroud)

但这样做有效吗?

是否将临时stl对象直接分配给stl_instance

c++ rvalue-reference move-semantics return-value-optimization c++11

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

按位置分割向量

如果有一个向量x

length(x)
# 100
Run Code Online (Sandbox Code Playgroud)

还有一个向量a,表示 x 的子向量的前导索引:

a
# 1, 5, 23, 79
Run Code Online (Sandbox Code Playgroud)

然后我想分裂x根据a如下:

list(x[1:4], x[5:22], x[23:78], x[79:100])
Run Code Online (Sandbox Code Playgroud)

在 R 中有没有一种快速的方法来做到这一点?

r

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