标签: julia

链接R和朱莉娅?

Julia看起来很有希望进行快速和语法理智的计算(例如这里),但我怀疑它在整体统计工作流程方面还不会在R附近.所以我想在C++主要用于R程序的地方使用它:优化代码的慢速部分.然而,在我花时间学习Julia之前,我很好奇在R代码中嵌入Julia片段的设施是什么.

所以:

  • 连接R和朱莉娅有什么设施?
  • 它们的耐用性和经过深思熟虑的程度是零至Rcpp吗?

我想从R调用Julia,就像Rcpp现在允许从R内部调用C++一样.我不想从朱莉娅那里打电话给R. (所以RCall.jl不起作用)

r julia

128
推荐指数
8
解决办法
2万
查看次数

朱莉娅的"象征"是什么?

具体来说:我正在尝试使用Julia的DataFrames包,特别是带有names选项的readtable()函数,但这需要一个符号向量.

  • 什么是象征?
  • 为什么他们会选择一个字符串向量?

到目前为止,我发现只有少数几个对朱莉娅语中的单词符号的引用.看起来符号用":var"表示,但我不清楚它们是什么.

旁白:我可以跑

df = readtable( "table.txt", names = [symbol("var1"), symbol("var2")] )
Run Code Online (Sandbox Code Playgroud)

我的两个项目符号仍然存在.

julia

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

如何为julia REPL提供用户定义的函数描述("docstrings")?

f当使用?f或通过REPL检查时,用户定义的函数(比如说)如何具有有意义的打印输出help(f)

例如,想象一下我写下面的函数

function f(x::Float64, y::Float64)
    return 2x - y^2
end
Run Code Online (Sandbox Code Playgroud)

如果我把它加载到julia会话中并尝试help(f)我得到以下内容:

julia> help(f)
f (generic function with 1 method)
Run Code Online (Sandbox Code Playgroud)

如果相反我想看到类似的东西怎么办?

julia> help(f)
f

   Compute 2 times x minus y squared
Run Code Online (Sandbox Code Playgroud)

其中描述"计算2次x减y平方"的描述.我猜我的问题的答案可以从问题的答案中确定:"描述应该写在哪里?"


举例来说,如果我想在python中做同样的事情,我可以定义函数并将描述作为文档字符串:

def f(x, y):
    """
    Compute 2 times x minus y squared
    """
    return 2 *  x - y ** 2
Run Code Online (Sandbox Code Playgroud)

当我输入help(f)f?从IPython 时,这将使我的描述立即可用.

julia

85
推荐指数
2
解决办法
5706
查看次数

加速朱莉娅写得不好的R例子

朱莉娅将性能与R进行比较的例子似乎特别令人费解. https://github.com/JuliaLang/julia/blob/master/test/perf/perf.R

你可以从下面的两种算法中获得最快的性能(最好解释你改变了什么以使它更像R)?

## mandel

mandel = function(z) {
    c = z
    maxiter = 80
    for (n in 1:maxiter) {
        if (Mod(z) > 2) return(n-1)
        z = z^2+c
    }
    return(maxiter)
}

mandelperf = function() {
    re = seq(-2,0.5,.1)
    im = seq(-1,1,.1)
    M = matrix(0.0,nrow=length(re),ncol=length(im))
    count = 1
    for (r in re) {
        for (i in im) {
            M[count] = mandel(complex(real=r,imag=i))
            count = count + 1
        }
    }
    return(M)
}

assert(sum(mandelperf()) == 14791)

## quicksort ##

qsort_kernel = function(a, …
Run Code Online (Sandbox Code Playgroud)

optimization r julia

72
推荐指数
2
解决办法
7972
查看次数

Julia是否动态输入?

许多博客和手册本身都说Julia是动态类型的.但是从我的手册的阅读,它的声音,我更喜欢它是 静态类型类型推断,像F# .

  • Julia是否静态输入类型推断?
  • 它是动态输入的吗?
  • 我假设它是动态类型的,手册似乎不太可能出错.
  • 类型推断是否涉及朱莉娅?

types type-inference julia

65
推荐指数
2
解决办法
6343
查看次数

在朱莉娅,为什么@printf是宏而不是函数?

在Julia中,打印格式化字符串的语法如下:

@printf("Hello %d\n", 5)
Run Code Online (Sandbox Code Playgroud)

为什么是@printf宏而不是函数?它是否可以接受不同数量的参数?

julia

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

如何在编辑后在活动的Julia会话中重新加载模块?

2018年更新:请务必检查所有回复,因为这个问题的答案多年来已经多次改变.在此更新时,Revise.jl答案可能是最佳解决方案.

我有一个文件"/SomeAbsolutePath/ctbTestModule.jl",其内容是:

module ctbTestModule
export f1
f1(x) = x + 1
end
Run Code Online (Sandbox Code Playgroud)

我在一个运行"〜/ .juliarc.jl"的终端中点燃Julia.启动代码包括以下行:

push!(LOAD_PATH, "/SomeAbsolutePath/")
Run Code Online (Sandbox Code Playgroud)

因此我可以立即输入Julia控制台:

using ctbTestModule
Run Code Online (Sandbox Code Playgroud)

加载我的模块.正如预期的f1(1)回报2.现在我突然决定要编辑f1.我在编辑器中打开"/SomeAbsolutePath/ctbTestModule.jl",并将内容更改为:

module ctbTestModule
export f1
f1(x) = x + 2
end
Run Code Online (Sandbox Code Playgroud)

我现在尝试在我的活跃Julia会话中重新加载模块.我试试

using ctbTestModule
Run Code Online (Sandbox Code Playgroud)

f1(1)仍然返回2.接下来我尝试:

reload("ctbTestModule")
Run Code Online (Sandbox Code Playgroud)

正如这里所建议的,但f1(1)仍然会回归2.最后,我尝试:

include("/SomeAbsolutePath/ctbTestModule.jl")
Run Code Online (Sandbox Code Playgroud)

正如这里所建议的那样,这是理想的,因为我必须输入完整的绝对路径,因为当前目录可能不是"/ SomeAbsolutePath".我收到的警告信息Warning: replacing module ctbTestModule听起来很有希望,但f1(1)仍然会返回2.

如果我关闭当前的Julia会话,启动一个新会话并输入using ctbTestModule,我现在得到所需的行为,即f1(1)返回3.但显然我想在不 …

module julia

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

运行Julia .jl文件

我是朱莉娅的新手,刚刚完成了我的第一个项目.我在julia-studio中编写了代码,并在该程序中进行了测试.它给了我所有正确的输出,但是shell将输出分开,好像它是两个不同的执行.

我想知道我的编译器是否有问题,所以我想我会尝试在julialang.org上找到的默认julia shell中编译它.

但是,我无法理解和/或弄清楚如何在那里运行它.我当前的程序从同一目录中的另一个文件读取输入并输出结果.

任何人都可以解释如何运行该程序.这个http://julia.readthedocs.org/en/latest/manual/getting-started/对我没有意义.

示例输出:

 julia> program
 #
 #
 #
 #


 julia> 
 #
 #
 #
 #
 #
Run Code Online (Sandbox Code Playgroud)

#表示整数.理想情况下,输出不应与"julia>"分开

julia julia-studio

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

朱莉娅的并行性.功能和限制

在他们的arXiv论文中,Julia的原作者提到了以下内容:

2.14 Parallelism.并行执行由Julia在标准库中实现的基于消息的多处理系统提供.语言设计通过提供对称协程来支持这些库的实现,协同协程也可以被认为是协同调度的线程.此功能允许异步通信隐藏在库中,而不是要求用户设置回调.朱目前不支持本地线程,这是一种限制,但具有避免同步共享内存的使用的复杂性的优点.

他们说朱莉娅不支持原生线程是什么意思?什么是本机线程?

其他解释性语言(如PythonR)是否支持这种并行性?朱莉娅独自一人吗?

python parallel-processing multithreading r julia

53
推荐指数
1
解决办法
8443
查看次数

Julia每次编译脚本?

Julia语言每次编译脚本,我们不能用julia编译二进制文件吗?我尝试了一个带有println函数的小helloworld脚本,julia花了2,3秒来显示输出!如果我们可以制作二进制文件而不是每次编译都会更好

更新:朱莉娅有一些变化,因为我问过这个问题.虽然我不再关注julia的更新,因为我已经问过这个问题,如果你正在寻找类似的东西,请查看以下答案和关注julia的人的评论.

此外,很高兴知道现在加载脚本大约需要150毫秒.

julia

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