访问julia DataFrames包中的Rvector类型

访问julia DataFrames包中的Rvector类型,r,dataframe,julia,R,Dataframe,Julia,我正在尝试做一些非常简单的事情——只需在R中保存一个矩阵,并将其作为数组导入julia。这应该没那么难,但我正在努力操作RVector类型,它是在我将数据读入julia时创建的 这里有一个最小的例子。在R中,我运行以下脚本: var1 <- matrix( runif(9), 3, 3 ) save( var1, file='~/temp/file1.rda') 我想将x[“var1”]分配给julia工作区中的数组变量,我们称之为z。一种方法是将z初始化为空矩阵,然后用x的元素填充它

我正在尝试做一些非常简单的事情——只需在R中保存一个矩阵,并将其作为数组导入julia。这应该没那么难,但我正在努力操作
RVector
类型,它是在我将数据读入julia时创建的

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

var1 <- matrix( runif(9), 3, 3 )
save( var1, file='~/temp/file1.rda')
我想将
x[“var1”]
分配给julia工作区中的数组变量,我们称之为
z
。一种方法是将
z
初始化为空矩阵,然后用
x
的元素填充它

我遇到的问题是无法访问
x
的元素。正如
typeof
确认的那样,
x
的类型是
DataFrames.RVector{Float64,0x0e}
。这似乎不符合julia中索引的标准规则

y = x["var1"] ;
y[1]

ERROR: MethodError: `getindex` has no method matching getindex(::DataFrames.RVector{Float64,0x0e}, ::Int32)

DataFrames
文档似乎没有对
RVector
类型提供任何指导。有没有人知道我在哪里可以找到这些元素,或者其他关于如何访问这些元素的解释?更好的是,有没有更简单的方法将矩阵从R传递给julia?

我认为最简单的方法是将矩阵从R保存为文本文件,然后在julia中加载为文本文件。这里有没有不这样做的理由?例如:

在R中:

然后在茱莉亚:

using DataFrames
var1 = readtable("/path/to/temp.txt", separator ='\t');
using DataFrames, DataArrays
x = read_rda("/path/to/file1.rda")
y = DataFrame(x["var1"])

这样做还有一个额外的优点,即您可以在标准文本编辑器中轻松查看文件。如果您想查看文件或其中的一部分,可以使用其他程序(如python)轻松地对其进行操作,也可以轻松地与其他人共享,等等。

根据源文档中的一些测试,似乎以下方法可以奏效:如果您完全按照编写的代码使用代码,但在保存前将R中的矩阵转换为数据帧,然后将结果转换为数据帧。那么具体地说

在R中:

x[“var1”]数据
您想要什么

julia> typeof(b)
DataFrames.RVector{Float64,0x0e}

julia> b.data
9-element Array{Float64,1}:
 0.543234
 0.0220151
 0.867526
 0.255187
 0.710463
 0.437579
 0.168832
 0.761667
 0.600643

或者
数据(x[“var1”])
如果有NAs

确定。这是一个解决办法。而且它确实有你建议的其他优势。但实际上我想用它来解决的问题不是只有一个变量,而是来自R中一些统计分析的许多向量和矩阵。这些是julia中一些计算密集型工作的输入。您建议的方法是使用许多文本文件,并通过
readtable
命令循环加载它们。如果我可以将多个R对象保存到一个文件中,然后用一行代码将它们加载到julia中的字典中,那将更加优雅。
var1 <- data.frame(matrix( runif(9), 3, 3 ))
save( var1, file='/path/to/file1.rda')
using DataFrames, DataArrays
x = read_rda("/path/to/file1.rda")
y = DataFrame(x["var1"])
julia> typeof(b)
DataFrames.RVector{Float64,0x0e}

julia> b.data
9-element Array{Float64,1}:
 0.543234
 0.0220151
 0.867526
 0.255187
 0.710463
 0.437579
 0.168832
 0.761667
 0.600643