版本:从Julia v0.4开始(我使用0.5.0-dev + 433(2015-09-29 15:39 UTC))
问题:在看了Jakes Bolewski关于StaticVec我的演讲之后,我没有抓住length功能背后的想法.
julia> type StaticVec{T,N}
vals::Vector{T}
end
julia> StaticVec(T,vals...) = StaticVec{T,length(vals)}([vals...])
StaticVec{T,N}
julia> v= StaticVec(Float64,1,2,3)
StaticVec{Float64,3}([1.0,2.0,3.0])
Run Code Online (Sandbox Code Playgroud)
非上演length:
julia> function Base.length{T,N}(v::StaticVec{T,N})
N
end
length (generic function with 58 methods)
julia> code_llvm(length, (StaticVec{Float64,3},))
define i64 @julia_length_21889(%jl_value_t*) {
top:
ret i64 3
}
Run Code Online (Sandbox Code Playgroud)
和分阶段length版本
julia> @generated function Base.length{T,N}(v::StaticVec{T,N})
:(N)
end
length (generic function with 58 methods)
julia> code_llvm(length, (StaticVec{Float64,3},))
define i64 @julia_length_21888(%jl_value_t*) { …Run Code Online (Sandbox Code Playgroud) 朱莉娅有像R的桌面功能吗?我读过xtab,但不知道如何使用它.
假设我们具有R的data.frame rdata这col6是的Factor类型.
R示例代码:
rdata <- read.csv("mycsv.csv") #1
table(rdata$col6) #2
为了在Julia中读取数据和制作因子,我这样做:
using DataFrames
jldata = readtable("mycsv.csv", makefactors=true) #1 :col6 will be now pooled.
...,但是如何在julia中构建R表(如何实现#2)?
考虑矩阵:
M = [1.0 2.0 3.0; 5.0 4.0 3.0; 1.0 100.0 12.0]
Run Code Online (Sandbox Code Playgroud)
我想获得每行中最大值的列.所以它应该是:
col = [3; 1; 2]
Run Code Online (Sandbox Code Playgroud)
从那以后
M[1,3] -> 3.0;
M[2,1] -> 5.0;
M[3,2] -> 100.00;
Run Code Online (Sandbox Code Playgroud)
在Octave中很容易实现:
[max, col] = max(M,[],2)
Run Code Online (Sandbox Code Playgroud)
,其中col = [3; 2; 1].
在Julia中,我只能找到findmax返回每行最大元素的绝对索引的函数.所以它会是:
max, aindx = findmax(M,2)
Run Code Online (Sandbox Code Playgroud)
,其中aindx = [7,2,6]
M [7] = 3.0; M [2] = 5.0; M [6] = 100;
哪里可以找到Julia maxivelent for Octave max(M,[],2)?
我目前的解决方法:
max, aindx = findmax(M, 2);
msize=size(M);
col = zeros(msize[1], 1);
for i=1:msize[1]
_, col[i] …Run Code Online (Sandbox Code Playgroud) 我浏览了TS 手册,然后来到了映射类型。有一个代码片段可以将对象属性包装到代理中。
type Proxy<T> = {
get(): T;
set(value: T): void;
}
type Proxify<T> = {
[P in keyof T]: Proxy<T[P]>;
}
function proxify<T>(o: T): Proxify<T> {
// ... wrap proxies ...
}
let proxyProps = proxify(props);
Run Code Online (Sandbox Code Playgroud)
我试图用我的实现来填补proxify函数中的空白,我得到了这样的东西:
function proxify<T>(t: T): Proxify<T> {
let result = <Proxify<T>>{};
for (const k in t) {
result[k] = { //(*) from that moment I lose strong typing
get: () => t[k],
set: (value) => t[k] = value …Run Code Online (Sandbox Code Playgroud)