我想在下面的向量中找到包含星形字符的元素.
s <- c("A","B","C*","D","E*")
grep("*",s)
[1] 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
这不起作用.我可以理解,因为它是一个特殊的角色.
当我在这里阅读时,我决定在明星角色之前使用"\".但这给了我一个错误:
grep("\*",s)
Error: '\*' is an unrecognized escape in character string starting ""\*"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我想写一个在RStudio中创建新项目的模板.我想做的是:
ProjectTemplate
此文件夹中的包创建一个新项目:create.project('MyNewProject')
.我相信我可以编写第2步和第3步.但我不知道如何通过脚本在RStudio中创建一个新项目.如果有可能,我该怎么办?
我想获得基于向量的有序索引值(稍后我将使用此索引对另一个向量进行排序)。以下代码适用于我的目的:
std::vector<int> order_ideal(std::vector<double> x) {
std::vector<int> idx(x.size());
std::iota(idx.begin(), idx.end(), 0);
std::sort(idx.begin(), idx.end(), [&](int i, int j){return x[i] > x[j];});
return idx;
}
Run Code Online (Sandbox Code Playgroud)
但是,无法在 GCC 编译器的早期版本中使用 lambda 函数,因此我正在寻找另一种方法来实现此代码而不使用 lambda 函数。我真的很喜欢如何[&]
捕获外部环境变量。换句话说,我想x
在 std::sort()
.
或者,我可以进行以下工作,但它在我的计算机上比上面的函数慢六倍(我还没有检查它是否与早期的 GCC 版本兼容):
bool isGreater(int i, int j, std::vector<double> x)
{
return x[i] > x[j];
}
std::vector<int> order_bind(std::vector<double> x)
{
std::vector<int> idx(x.size());
std::iota(idx.begin(), idx.end(), 0);
std::sort(idx.begin(), idx.end(), std::bind(isGreater, std::placeholders::_1, std::placeholders::_2, x));
return idx;
}
Run Code Online (Sandbox Code Playgroud)
我有点明白我需要像这里解释的那样将这两个向量(idx
并x
在一起)绑定在一起。但在这种情况下我无法实现它。
我正在为贝叶斯分析结果准备一份Latex文档和幻灯片.R中"coda"包产生的跟踪图非常大.按大小,我的意思是千字节(KB)和加载时间.当我在慢速计算机或IPAD中向下滚动pdf文件时,加载涉及跟踪图的页面需要花费大量时间.有没有办法"减轻"这些情节,以便滚动时间大幅减少?(例如转换为另一种格式而不会丢失太多细节).
注意:我使用Rstudio和knitr来生成乳胶文档.
例如,我使用以下代码生成了一个图.如果我将其导出为单页PDF文档,则PDF的大小将为439 KB(与大小为7 KB的基本图表相比).
library(coda)
temp <- mcmc(matrix(rnorm(100000),ncol=1))
traceplot(temp)
Run Code Online (Sandbox Code Playgroud) 我有以下多层情节:
df <- data.frame(number = 1:10,
values = rnorm(10),
decision = factor(rbinom(10,1,.5), levels = c(0,1),
labels=c("No","Yes")),
expValues = rnorm(10),
bandwidth = runif(10, 0,1))
ggplot(df,aes(x = number, y = values, color=decision)) + aes(group=NA) +
geom_line(size = 1) +
geom_point(size = 3,shape = 16) +
geom_smooth(data = df, aes(ymin = values-bandwidth , ymax = values+bandwidth),
stat = "identity") +
geom_point(data=df,
aes(x=number,y=expValues),shape = "x", size = 5, color = "blue") +
geom_text(data = data.frame(x = Inf, y = max(df$values), label = "Mean = …
Run Code Online (Sandbox Code Playgroud) 我正在按照Rcpp 快速参考指南将矩阵的一行提取为向量。该指南的示例是:
// Copy the second column into new object (xx is a NumericMatrix)
NumericVector zz1 = xx( _, 1);
Run Code Online (Sandbox Code Playgroud)
当我在 Rstudio 中获取以下代码时,我收到以下错误:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
int foo1(Rcpp::IntegerVector res)
{
int output = res[0];
return output;
}
// [[Rcpp::export]]
int foo(Rcpp::IntegerMatrix res)
{
int n = res.nrow();
int output;
IntegerVector temp_res = res( 1, _);
// IntegerVector temp_res = res.row(1);
for (int r = 0; r < n; r++) {
output = foo1(res = …
Run Code Online (Sandbox Code Playgroud) 我正在尝试以y
第二个可为空向量 ( r
)的值是否为条件来评估向量 ( )的总和NA
。如果第二个向量r
为 NULL,y
则应将 的所有值相加。如果 的所有元素r
都是NA
,则函数应返回 NA。请参阅文本末尾以获得所需的输出。
我首先尝试了以下代码:
library(Rcpp)
cppFunction('double foo(NumericVector y, Rcpp::Nullable<Rcpp::IntegerVector> r = R_NilValue) {
double output = 0;
bool return_na = !Rf_isNull(r);
int y_count = y.size();
for (int i = 0; i < y_count; i++) {
if (Rf_isNull(r) || !R_IsNA(r[i])) {
//// if (Rf_isNull(r) || !R_IsNA(as<IntegerVector>(r)[i])) {
if (!Rf_isNull(r))
Rcout << R_IsNA(as<IntegerVector>(r)[i]) << " - "<< as<IntegerVector>(r)[i] << std::endl;
output = output …
Run Code Online (Sandbox Code Playgroud) ctrl+R 不再适用于执行脚本行。
这不是硬件/键盘问题。
我也重新启动了我的电脑。
我在另一台电脑上试过。
我最近从使用 R 切换到使用 RStudio。我认为这可能与它有关,所以我在 RStudio 中打开并重新保存了脚本,但没有任何效果。
此外,我创建了一个 R-Project 文件夹并将文件(包括相关脚本)复制到其中。然后我启动了 R-Studio 并打开了项目。
我想发布我的 sessionInfo(),但不知道如何在不执行命令的情况下执行此操作。
请记住,我仅将 R 用于统计目的。我不太了解信息学或其他类型的编程等,所以请尽量保持简单。谢谢!