我在R中写了一个Gibbs采样器并决定将它移植到C以查看它是否会更快.我看过很多页面声称C的速度会快50倍,但每次使用它时,它只比R快了大约五六倍.我的问题是:这是预期的,还是我没有使用哪些技巧会使我的C代码明显快于此(就像使用矢量化加速R中的代码一样)?我基本上接受了代码并在C中重写了它,用for循环替换矩阵操作并使所有变量指针.
另外,从R程序员的角度来看,有没有人知道C的良好资源?Matloff 有一本名为The Art of R Programming的优秀书籍,但它似乎是从已经知道C.的人的角度写的.
此外,当我的C代码在Windows的标准R GUI中运行时,屏幕会冻结.它没有崩溃; 一旦代码完成运行,它就会解冻,但它阻止我在GUI中做任何其他事情.有谁知道我怎么能避免这个?我正在使用.C()调用该函数
我在R中有两个日期,我想创建一个间隔为一个月间隔的日期向量.然而,R似乎使用31天的间隔(有时?).例如:
x <- as.Date("31-01-1900", "%d-%m-%Y")
y <- as.Date("31-01-1901", "%d-%m-%Y")
seq(x, y, by="month")
[1] "1900-01-31" "1900-03-03" "1900-03-31" "1900-05-01" "1900-05-31"
[6] "1900-07-01" "1900-07-31" "1900-08-31" "1900-10-01" "1900-10-31"
[11] "1900-12-01" "1900-12-31" "1901-01-31"
Run Code Online (Sandbox Code Playgroud)
我想要的是一个日期向量,每个日期是每个月的最后一天,如下所示:
[1] "1900-01-31" "1900-02-29" "1900-03-31" "1900-04-30" "1900-05-31"
[6] "1900-06-30" "1900-07-31" "1900-08-31" "1900-09-30" "1900-10-31"
[11] "1900-11-30" "1900-12-31" "1901-01-31"
Run Code Online (Sandbox Code Playgroud)
R知道月份的长度,还是我必须手工完成?
我正在使用randomForestR 2.15.2中的软件包(v.4.6-7).我找不到该partialPlot函数的源代码,并试图弄清楚它的作用(帮助文件似乎不完整.)它应该将变量的名称x.var作为参数:
library(randomForest)
data(iris)
rf <- randomForest(Species ~., data=iris)
x1 <- "Sepal.Length"
partialPlot(x=rf, pred.data=iris, x.var=x1)
# Error in `[.data.frame`(pred.data, , xname) : undefined columns selected
partialPlot(x=rf, pred.data=iris, x.var=as.character(x1))
# works!
typeof(x1)
# [1] "character"
x1 == as.character(x1)
# TRUE
# Now if I try to wrap it in a function...
f <- function(w){
partialPlot(x=rf, pred.data=iris, x.var=as.character(w))
}
f(x1)
# Error in as.character(w) : 'w' is missing
Run Code Online (Sandbox Code Playgroud)
1)我在哪里可以找到源代码partialPlot?
2)如何编写一个以字符串x1作为参数x1 …