小编Mar*_*ler的帖子

RStan会在超级计算机上运行吗?

Stan是Gelman等人的新贝叶斯分析软件.

我猜,RStan是一种从内部呼叫Stan的方法.

Will Stan/RStan是否可以在配备Linux操作系统的超级计算机上运行,​​如果可以,它可以利用超级计算机的多处理器?有人告诉我,WinBUGS不会在Linux机器上运行和/或无法利用超级计算机的多处理器.

我正在寻找一种加速贝叶斯分析的方法 - 从几周到几天/小时.

r stan

10
推荐指数
2
解决办法
2865
查看次数

在函数内打印或显示变量

有没有办法print在函数内部显示或显示变量的值,而不是在调用函数后在函数外部打印值?

我几乎可以肯定存在并认为代码被调用reveal或类似的东西,但我不记得正确的术语.

my.function <- function(x) {

  y <- x^2
 #  reveal(y)
 #  display(y)

 # desired result is to print or display here:
 # [1] 16

  cat(y)
  print(y)
  return(y)  
}

x <- 4

my.function(x)
#16[1] 16
#[1] 16
Run Code Online (Sandbox Code Playgroud)

cat(y),print(y)以及return(y)功能之外的所有打印.谢谢你的任何建议.

编辑

我在这里发现了类似的问题:

https://stat.ethz.ch/pipermail/r-help/2002-November/027348.html

Peter Dalgaard对该问题的回答是取消选中标签buffered output下的一个Misc选项.但是,这似乎并不适用于我的情况.也许这些问题是无关的.

printing r

10
推荐指数
3
解决办法
3万
查看次数

如何用正则表达式填补两个字符之间的差距

我有一个如下数据集.我想用1来替换两个1之间的所有点,如期望结果所示.我可以regex在基地做这个R吗?

我试过了:

regexpr("^1\\.1$", my.data$my.string, perl = TRUE)
Run Code Online (Sandbox Code Playgroud)

这是c#中的解决方案

两个确切字符之间的字符

谢谢你的任何建议.

my.data <- read.table(text='
     my.string                           state
     ................1...............1.    A
     ......1..........................1    A
     .............1.....2..............    B
     ......1.................1...2.....    B
     ....1....2........................    B
     1...2.............................    C
     ..........1....................1..    C
     .1............................1...    C
     .................1...........1....    C
     ........1....2....................    C
     ......1........................1..    C
     ....1....1...2....................    D
     ......1....................1......    D
     .................1...2............    D
', header = TRUE, na.strings = 'NA', stringsAsFactors = FALSE)

desired.result <- read.table(text='
     my.string                           state
     ................11111111111111111.    A
     ......1111111111111111111111111111    A
     .............1.....2..............    B
     ......1111111111111111111...2.....    B
     ....1....2........................    B
     1...2.............................    C
     ..........1111111111111111111111..    C
     .111111111111111111111111111111...    C
     .................1111111111111....    C …
Run Code Online (Sandbox Code Playgroud)

regex r

10
推荐指数
3
解决办法
816
查看次数

将MSWord文件读入R中

是否可以将MSWord 2010文件读入R?我有Windows 7和戴尔PC.

我正在使用这条线:

my.data <- readLines('c:/users/mark w miller/simple R programs/test_for_r.docx')
Run Code Online (Sandbox Code Playgroud)

尝试读取包含以下文本的MSWord文件:

A   20  1000    AA
B   30  1001    BB
C   10  1500    CC
Run Code Online (Sandbox Code Playgroud)

我收到一条警告信息:

警告消息:在readLines("c:/ users/mark w miller/simple R programs/test_for_r.docx")中:在'c:/ users/mark w miller/simple R programs/test_for_r.docx'上找到不完整的最终行

并且my.data似乎是胡言乱语:

# [1] "PK\003\004\024" "¤l"             "ÈFÃË‹Átí"
Run Code Online (Sandbox Code Playgroud)

我知道通过这个简单的例子,我可以轻松地将MSWord文件转换为其他格式.但是,我的实际数据文件包含几十年前输入的复杂表格,然后再扫描成pdf文档.原始纸质文档的年龄和原始文件中的不完善,打字和/或扫描过程导致一些字母和数字不是很清楚.到目前为止,将pdf文件转换为MSWord似乎是正确翻译表格中最成功的.将MSWord文件转换为Excel或富文本等并不是很成功.即使在转换为MSWord之后,生成的文件也非常复杂并且包含许多错误.我想如果我能将MSWord文件读入R中,这可能是编辑和纠正它们的最有效方法.

我知道'package tm',我想可以将MSWord文件读入R,但我有点担心使用它,因为它似乎需要安装第三方软件.

谢谢你的任何建议.

r ms-word

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

使用Rcpp运行已编译的C++代码

我一直在努力通过Dirk Eddelbuettel的Rcpp教程:

http://www.rinfinance.com/agenda/

我已经学会了如何在目录中保存C++文件并调用它并从R中运行它.我运行的C++文件名为'logabs2.ccp',其内容直接来自Dirk的幻灯片之一:

#include <Rcpp.h>

using namespace Rcpp;

inline double f(double x) { return ::log(::fabs(x)); }

// [[Rcpp::export]]
std::vector<double> logabs2(std::vector<double> x) {
    std::transform(x.begin(), x.end(), x.begin(), f);
    return x;
}
Run Code Online (Sandbox Code Playgroud)

我用这个R代码运行它:

library(Rcpp)
sourceCpp("c:/users/mmiller21/simple r programs/logabs2.cpp")
logabs2(seq(-5, 5, by=2))
# [1] 1.609438 1.098612 0.000000 0.000000 1.098612 1.609438
Run Code Online (Sandbox Code Playgroud)

我在R GUI中运行Windows 7计算机上的代码,默认情况下似乎是安装的.我还安装了最新版本的Rtools.上面的R代码似乎需要相对较长的时间才能运行.我怀疑大部分时间都用于编译C++代码,而且一旦编译C++代码,它就会非常快速地运行. Microbenchmark当然表明Rcpp减少了计算时间.

我从来没有使用过C++,但我知道当我编译C代码时,我会得到一个*.exe文件.我从一个名为logabs2.exe但找不到的文件中搜索了我的硬盘.我想知道如果logabs2.exe创建文件,上述C++代码是否可能运行得更快.是否可以创建一个logabs2.exe文件并将其存储在某个文件夹中,然后每当我想使用它时让Rcpp调用该文件?我不知道这是否合理.如果我可以在*.exe文件中存储C++函数,那么每次我想要将它与Rcpp一起使用时我可能不需要编译该函数,那么Rcpp代码可能会更快.

对不起,如果这个问题没有意义或是重复的话.如果可以将C++函数存储为*.exe文件,我希望有人会告诉我如何修改上面的R代码来运行它.感谢您对此的任何帮助,或直接告诉我为什么我的建议不可行或不推荐.

我期待看到德克的新书.

c++ r rcpp

9
推荐指数
2
解决办法
6513
查看次数

评论放慢R吗?

评论放慢了R吗?

关于python,StackOverflow上已经问了两次这个问题:

评论会减慢解释语言的速度吗? 过度评论代码会减慢执行速度吗?

因为python答案似乎是'不'.我不太了解两种语言之间的差异,无法知道这些答案的相关性R.

这是一个关于白色空间的类似问题R.答案似乎是'不'.

白色空间会减慢处理速度

r

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

R:整数与数字

这个问题或许早些时候得到了回答,但我没有看到答案.

我有一个由数字和缺失值组成的数据集.一行是一个百分比.下面是一小组假数据,其中AA,BB和CC是列名.此数据集中的第三行是百分比.

   AA    BB    CC
  234   432    78
 1980  3452  2323
 91.1    90  93.3
   34   123    45
Run Code Online (Sandbox Code Playgroud)

在这种情况下,当我读取数据集时,AA和CC是数字,BB是整数.我猜某个地方90.0被舍入到90.如果我没有指定BB是数字,这会导致基本算术的问题吗?

我相信如果dd = 1且ee = 2并且两者都是整数,则C语言表示dd/ee = 0,而R表示dd/ee = 0.5.

下面是一系列简单的数学运算,无论数据是数字还是整数,所有似乎都表明R中的答案都没有改变.尽管如此,我一直认为在读取数据时指定所有变量都是数字是明智的.使用Google我发现了一个或两个数据类型似乎有所作为的例子,但不是下面的.

aa <- c(1,2,3,4,5,6,7)
bb <- 2
str(aa)
str(bb)

cc <- as.integer(aa)
dd <- as.integer(bb)
str(cc)
str(dd)

aa/bb
cc/dd
aa/dd
cc/bb

ee <- aa * aa
str(ee)
sum(ee/2)

ff <- cc * cc
str(ff)
sum(ff/2)

gg <- 4.14

hh <- ((aa * aa) * gg) / 2
hh
ii <- ((cc * cc) …
Run Code Online (Sandbox Code Playgroud)

r

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

如何从R中的字符串中仅删除"实际数字"

我有一串数字和字符

c2 = "list of 2nd C2 H2O 1 12 123"
Run Code Online (Sandbox Code Playgroud)

我需要摆脱所有数字,即实际数字,即1,12,123,但不是那些属于字符集的数字,即2nd,C2,H2O.

到目前为止,我提出的最佳解决方案是这个

gsub("? [[:digit:]]*", " ", c2)
"list of nd C2 H2O   "
Run Code Online (Sandbox Code Playgroud)

它成功地摆脱了1 12 123,同时保留了C2 H2O.但是,我在第二节输掉了2.

我没办法.

谢谢!

regex numbers r character gsub

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

在R中创建嵌套序列

我想创建以下vector两个嵌套sequences,加上字母ab:

desired.data <- c('a1b1', 'a1b2', 'a1b3', 'a2b1','a2b2', 'a2b3', 
                  'a3b1', 'a3b2', 'a3b3', 'a4b1','a4b2', 'a4b3', 
                  'a5b1', 'a5b2', 'a5b3')
Run Code Online (Sandbox Code Playgroud)

我怀疑这是重复的,但我搜索Stack Overflow了一个小时没有成功.谢谢你的任何建议.

r paste sequence

7
推荐指数
2
解决办法
442
查看次数

在第一个冒号处拆分字符串

我正在使用文本格式读取数据文件readLines.第一个"列"是我不需要的复杂文本.下一列包含我需要的数据.第一个"列"和数据用冒号(:)分隔.我希望在第一个冒号处拆分每一行并删除生成的文本字符串,仅保留数据.

下面是一个示例数据文件.一个潜在的复杂因素是一行数据包含多个冒号.这条线可能在某些时候成为我的标题.所以,我可能不应该在每个结肠处分开,只是在第一个结肠处.

my.data <- "first string of text..:  aa : bb : cc 
            next string ........  :   2    0    2
            third string......1990:   7    6    5
            last string           :   4    2    3"

my.data2 <- readLines(textConnection(my.data))
my.data2
Run Code Online (Sandbox Code Playgroud)

我试过这里提供的代码:

在字符串中的第一个逗号上拆分

和这里:

R:从字符串中删除最后三个点

上面第一个链接的代码似乎只在第一行的第一个冒号处分开.第二个链接的代码可能会做我想要的,但对我来说太复杂到目前为止无法成功修改它.

这是我希望获得的数据,此时我可以使用一个非常简单的gsub语句简单地用空格替换第一行中剩余的冒号:

   aa : bb : cc 
    2    0    2
    7    6    5
    4    2    3
Run Code Online (Sandbox Code Playgroud)

很抱歉,如果这是我未找到的帖子的副本,感谢您提供任何建议或帮助.

regex string r gsub

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

标签 统计

r ×10

regex ×3

gsub ×2

c++ ×1

character ×1

ms-word ×1

numbers ×1

paste ×1

printing ×1

rcpp ×1

sequence ×1

stan ×1

string ×1