小编tos*_*san的帖子

!!! ggplot2 geom_point() 函数的(拼接运算符)

我在用 !!!(拼接运算符/大爆炸运算符)用于 ggplot2::geom_point() 函数,并且失败。有人能指出这段代码有什么问题吗?以下代码尝试从字符向量执行 ggplot2 函数。

library(rlang)
library(ggplot2)

data(mtcars)
data = mtcars

assoc = c( "cyl" , "hp" )
names(assoc) = c("x", "y")
assoc_lang = rlang::parse_exprs(assoc)
gg = ggplot2::ggplot(data, ggplot2::aes( ,, !!! assoc_lang )) # This works

params = c( "10", "\"black\"" )
names(params) = c("size", "colour" )
params_lang = rlang::parse_exprs(params)
gg = gg + ggplot2::geom_point( !!! params_lang ) # This fails

plot(gg)
Run Code Online (Sandbox Code Playgroud)
  • 输出
Error in !params_lang : invalid argument type
Calls: <Anonymous> -> layer
Execution halted
Run Code Online (Sandbox Code Playgroud)

(注意)以下代码是交互式方式的等效代码,它显示了我想要在上面的代码中执行的操作。

library(ggplot2)

data(mtcars) …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 rlang

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

如何在RCpp中向数据框添加新列?

我正在尝试使用RCpp向数据框添加新列.

在以下代码中,我打算向dataframe,df添加"result"列.但是运行代码后数据集没有"结果"列.你能告诉我他们有什么问题吗?

R文件调用AddNewCol()函数.

library(Rcpp)
sourceCpp('AddNewCol.cpp')
AddNewCol( df ,"result")
Run Code Online (Sandbox Code Playgroud)

AddNewCol.cpp

#include <Rcpp.h>
#include<math.h>
using namespace Rcpp;
// [[Rcpp::export]]
void AddNewCol(DataFrame& df, std::string new_var) {
  int maxRow = df.nrows();
  NumericVector vec_x = df["x"];
  NumericVector vec_y = df["y"];
  NumericVector resultvec = NumericVector(maxRow);

  for( int i = 0 ; i < maxRow; i++ ){
    resultvec[i] = vec_x[i] * pow( vec_y[i] , 2 );  
  }
  df[new_var] = resultvec;
}
Run Code Online (Sandbox Code Playgroud)

r rcpp

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

是否在Rcpp和C ++之间转换向量(使用Rcpp :: as或Rcpp :: wrap)创建新的向量并复制元素?

以我的理解,在Rcpp和C ++之间转换向量将创建新向量,如下所示。我的理解正确吗?

将Rcpp向量转换为C ++向量时,我们使用Rcpp::as<T>()(例如Rcpp::as<std::string>用于Rcpp::CharacterVector)。 std::vector<std::string>创建后,原始Rcpp元素将被复制到C ++向量中std::string。这意味着修改新创建的C ++矢量元素不会影响原始的Rcpp矢量元素。

将C ++向量转换为Rcpp向量时,我们使用Rcpp::wrap()。创建具有相应类型的Rcpp向量,并将C ++元素作为Rcpp对象复制到Rcpp向量中。这意味着修改新创建的Rcpp矢量元素不会影响原始的C ++矢量元素。

c++ r vector rcpp

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

我可以在C中将char *传递给const char *吗?

我正在实现一个在C中将字符串转换为double的函数。该函数不是破坏性的,即,我不修改传递的字符串,而只是在函数中读取它。我想将char *,const char *以及字符串文字传递给函数。

以下功能是否适合此目的?我认为问题在于是否在C中定义了并允许将char *传递给const char *。

double str2double( const char* input);
Run Code Online (Sandbox Code Playgroud)

谢谢。(我找到了一些类似的问题标题,但他们的答案对我来说很模糊,我在这里问。)

c const char

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

标签 统计

r ×3

rcpp ×2

c ×1

c++ ×1

char ×1

const ×1

ggplot2 ×1

rlang ×1

vector ×1