小编squ*_*bar的帖子

Julia的最低位置

Julia是否有内置命令来查找向量最小值的索引?例如,R有一个which.min命令(which.max当然还有一个命令).

显然,我自己可以写下面的内容,但不必这样做会很好.

function whichmin( x::Vector )
  i = 1
  min_x=minimum(x)
  while( x[i] > min_x ) 
    i+=1 
  end
  return i
end
Run Code Online (Sandbox Code Playgroud)

如果以前曾经问过这个问题,我会道歉,但我找不到它.谢谢!

julia

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

将R矩阵转换为犰狳的速度非常慢

观察

对于中等大小的矩阵,从R到C++传递矩阵的开销对于arma::mat类型而言比对NumericMatrix类型要慢得多.喜欢长约250倍.这是一个最小的例子

#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
using namespace Rcpp;
using namespace arma;

// [[Rcpp::export]]
double test_nm( NumericMatrix X ) {
  return 0.0 ;
}

// [[Rcpp::export]]
double test_arma( mat X ) {
  return 0.0 ;
}

// [[Rcpp::export]]
double test_nm_conv( NumericMatrix X ) {
  mat X_arma = as<mat>( X ) ; 
  return 0.0 ;
}
Run Code Online (Sandbox Code Playgroud)

然后,在R:

XX <- matrix( runif( 10000 ), 2000, 50 )
microbenchmark( test_nm( XX ), test_arma( XX ), ( XX ) ) …
Run Code Online (Sandbox Code Playgroud)

c++ r matrix armadillo rcpp

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

将R数据文件读入julia时出现Gzip错误

我在读取R数据文件时从gzip收到错误.我正在尝试使用此处描述的方法:在Julia中读取和写入RData文件.

这是一个最小的例子.在R中,我运行以下脚本:

var1 <- matrix( runif(9), 3, 3 )
save( var1, file='~/temp/file1.rda')
Run Code Online (Sandbox Code Playgroud)

然后在朱莉娅:

using DataFrames
x = read_rda("~/temp/file1.rda")
Run Code Online (Sandbox Code Playgroud)

返回:

ERROR: GZip.GZError(-1,"gzopen failed")
 in gzopen at /home/squipbar/.julia/v0.4/GZip/src/GZip.jl:250
 in gzopen at /home/squipbar/.julia/v0.4/GZip/src/GZip.jl:265
 in read_rda at /home/squipbar/.julia/v0.4/DataFrames/src/RDA.jl:418
Run Code Online (Sandbox Code Playgroud)

我不认为我做任何蠢事.我在网上发现的最接近错误的是RDatasets github问题,这里:https://github.com/johnmyleswhite/RDatasets.jl/issues/32

那么也许这与RDatasets有某种关系?建议非常欢迎.

gzip r dataframe julia

6
推荐指数
2
解决办法
237
查看次数

在朱莉娅中最佳地传递固定尺寸阵列的尺寸

我想写一个以矩阵作为输入的函数.这是一个复杂项目中的频繁低级调用,因此尽可能快地使这个功能具有潜在的严重性能影响.因为速度对我来说非常重要,我正在使用类型,FixedSizeArrays因为我知道这将节省内存使用量.但我经常知道输入矩阵的某些属性,我不确定我是否正在充分利用它.

这是一个简单的例子.想象一下,我希望尽可能快地完成以下功能:

using FixedSizeArrays

function foo( input::Mat )
# NB: Mat is the FixedSizeArrays matrix type
  return 2 * input
end
Run Code Online (Sandbox Code Playgroud)

显然这是一个微不足道的例子,但这不是重点.关键是我对矩阵的维度有所了解input:它总是只有两列,我总是可以在运行时指定行数.这似乎是可以传递给编译器以使我的代码更快的信息.我可以将它作为定义大小的参数传递input吗?这是一个不起作用的例子,但应该让你知道我正在尝试做什么.

function bar( int::N, thismat::Mat{N,2,Float64} )
  return 2 * thismat
end
Run Code Online (Sandbox Code Playgroud)

有这样的东西我可以做吗?如果可以的话,这会发挥作用吗?也许FixedSizeArrays已经做了所有可以完成的事情.谢谢你的想法!

performance julia fixed-size-types

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

在Rcpp中设置*only*列名称

我想仅使用Rcpp设置矩阵的列名,但保持行名不变.据我所知,该dimnames属性仅设置两者.例如:

这是我想要做的最小例子,但只是在Rcpp而不是R:

my.mat <- diag(3)
colnames( my.mat ) <- c( "A", "B", "C")
my.mat
     A B C
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

r rcpp

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

标签 统计

julia ×3

r ×3

rcpp ×2

armadillo ×1

c++ ×1

dataframe ×1

fixed-size-types ×1

gzip ×1

matrix ×1

performance ×1