我通过关于这些指南编译了R:
http://www.r-bloggers.com/compiling-64-bit-r-2-10-1-with-mkl-in-linux/
http://cran.r-project.org/doc/manuals/R-admin.html#MKL
但是对于矩阵代数,R不使用所有可用的CPU.
我试过两个:
MKL="-L${MKL_LIB_PATH} -lmkl_gf_lp64 -lmkl_gnu_thread \
-lmkl_core -fopenmp -lpthread"
Run Code Online (Sandbox Code Playgroud)
和
MKL=" -L${MKL_LIB_PATH} \
-Wl,--start-group \
${MKL_LIB_PATH}/libmkl_gf_lp64.a \
${MKL_LIB_PATH}/libmkl_gnu_thread.a \
${MKL_LIB_PATH}/libmkl_core.a \
-Wl,--end-group \
-lgomp -lpthread"
Run Code Online (Sandbox Code Playgroud)
选项.
如何强制R使用所有可用的CPU?
如何检查R是否使用MKL?
目前我使用的是ubuntu。
默认情况下,R 使用 g++ 编译 R 包中的 c/c++ 代码。
如何强制 R 使用 clang++/clang?
我试图提交支持OpenMP的R包(如果openmp可用,这个包可以在Linux中编译).
我检查可能包装时出现此错误.
检查Makevars中的编译标志...警告变量'PKG_CXXFLAGS'中的非可移植标志:-fopenmp
如何抑制此错误并将其提交给CRAN.
我有这个代码:
library(doParallel)
registerDoParallel(cores = 8)
result = foreach(A = c(1, 2, 3),B = c(10, 20), .combine = list) %dopar% {
A*B
}
Run Code Online (Sandbox Code Playgroud)
结果
[[1]]
[1] 10
[[2]]
[1] 40
Run Code Online (Sandbox Code Playgroud)
但我想要:10、20、30、20、40、60
有什么方法可以确定 R 对象是 S3 还是 S4 类?
例如 class(x) 只返回对象名称而不是它的类型。
我想用相同的字符替换野生字符,但使用\前缀.
例如:
gsub("#","\\#","234254#3")
Run Code Online (Sandbox Code Playgroud)
预期结果:234254\#3
但我们得到:
"234254#3"
gsub(" ","\\ ","234254 3")
Run Code Online (Sandbox Code Playgroud)
预期结果: 234254\ 3
但我们得到:
"234254 3"
Run Code Online (Sandbox Code Playgroud)
但是这个命令不起作用.
假设我有这些数据:
c1 c2 c3
A A AA
A B BB
A C CC
B A DD
B B EE
B C FF
C A GG
C B HH
C C II
A A JJ
Run Code Online (Sandbox Code Playgroud)
我想dcast用这个函数重塑它们:
dcast(data,c1~c2,value.var="c3",function(x)x)
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
Error in vapply(indices, fun, .default) : values must be length 0,
but FUN(X[[1]]) result is length 1
Run Code Online (Sandbox Code Playgroud)
如何使用新功能dcast(用户定义的功能).
我想得到:
A B C
A AA BB CC
B DD EE FF
C GG HH II
A JJ NA NA
Run Code Online (Sandbox Code Playgroud) 我有2000个 vector<vector<bool>>,每个vector<bool>包含200个元素,我将对这个向量矢量进行排序.假设元素vector<bool>是一个二进制数.
原始数据:
vector 1: 1,1,1
vector 2: 1,0,1
vector 3: 0,0,0
vector 4: 1,0,0
Run Code Online (Sandbox Code Playgroud)
排序后:
vector 3: 0,0,0
vector 4: 1,0,0
vector 2: 1,0,1
vector 1: 1,1,1
Run Code Online (Sandbox Code Playgroud)
可以使用sort一个特殊的谓词,但令人惊讶的是,当我在sort没有谓词的情况下调用时,它似乎无论如何都可以工作.
vector<bool> A = {1, 1, 1};
vector<bool> B = {1, 0, 1};
vector<bool> C = {0, 0, 0};
vector<bool> D = {1, 0, 0};
vector < vector<bool> > v = {A,B,C,D};
sort(v.begin(),v.end());
Run Code Online (Sandbox Code Playgroud)
并且顺序为上面的"排序后".
为什么没有特殊的谓词呢?