小编Ben*_*sen的帖子

当我期望 R 中的数据帧输出时,为什么 Rccp 返回类似列表的输出?

我正在尝试编写一个 .cpp,它接受一个输入向量并输出一个包含输入向量中所有可能组合的两列数据帧。我的输出给出了所需的值,但不是作为数据帧。我在 .cpp 文件中更改了什么才能获得数据帧输出?

我的possible_combos.cpp文件如下所示:

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
GenericVector C_all_combos(GenericVector a) {
  int vec_length = a.size();
  int vec_length_sq = vec_length*vec_length; 
  GenericVector expand_vector_a(vec_length_sq);
  GenericVector expand_vector_b(vec_length_sq);  
  for (int i=0; i<vec_length_sq; i++) { expand_vector_a[i] = a[i / vec_length]; };
  for (int i=0; i<vec_length_sq; i++) { expand_vector_b[i] = a[i % vec_length]; };
  DataFrame my_df = DataFrame::create(Named("v_1") = expand_vector_a,
                                    Named("v_2") = expand_vector_b);
return my_df;
}

/*** R
C_all_combos(c(1, "Cars", 2.3))
  */
Run Code Online (Sandbox Code Playgroud)

运行所需的输出Rcpp::sourceCpp("possible_combos.cpp")是:

    v_1    v_2
    1       1
    1 …
Run Code Online (Sandbox Code Playgroud)

c++ r rcpp

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

替代 R 中的子集?

例如,我有 5 个州和每个州的多个城市。我想每个州只选择 1 个城市。我正在尝试这个代码:

country <- subset(country, country$state == "1" & country$city == "1" |  
                           country$state == "2" & country$city == "4" |
                           country$state == "3" & country$city == "3" | 
                           country$state == "4" & country$city == "2" |
                           country$state == "5" & country$city == "101")
Run Code Online (Sandbox Code Playgroud)

有没有另一种方法可以做到这一点?我发现这段代码非常丑陋且不理想。

r subset

3
推荐指数
1
解决办法
64
查看次数

如何创建具有相同 X 轴的多个图?

我正在尝试使用具有相同 X 轴但不同 Y 轴的数据集制作单个图。作为一个例子,我有这个数据集:

A1 <- rnorm(100)
B1 <- rnorm(100)
B2 <- rnorm(100)
B3 <- rnorm(100)

grid <- matrix(c(1:3),nrow=3,ncol=1,byrow=TRUE)
layout(grid)

plot(A1,B1)
plot(A1,B2)
plot(A1,B3)
Run Code Online (Sandbox Code Playgroud)

这是我得到的,带有多个 X 轴:

在此输入图像描述

我知道如何使用,ggplot2但我正在寻找另一种方法,例如使用layout. 任何帮助将非常感激。

layout plot r

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

加法和减法后浮点数小于等于

在一系列浮点算术运算之后,是否存在一个"最佳实践",而不是与浮点数相等的比较?

我在R中有以下示例,但该问题不仅适用于R,而且适用于使用浮点的任何语言.我有一个双x = 1,我应用了一系列的加法和减法.最后x应该是一个但不是由于浮点运算(从我收集的).这是一个例子

> stop_times <- seq(0.25, 2, by = .25)
> expr <- expression(replicate(100,{
    x <- 1

    for(i in 1:10) {
      tmp <- rexp(1, 1)
      n <- sample.int(1e2, 1)
      delta <- tmp / n
      for(j in 1:n)
        x <- x - delta
      x <- x + tmp
    }

    # "correct" answer is 4  
    which.max(x <= stop_times)
  }))
> eval(expr)
  [1] 5 5 5 4 4 4 5 5 5 4 5 4 4 4 …
Run Code Online (Sandbox Code Playgroud)

floating-point r floating-accuracy epsilon inexact-arithmetic

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