访问julia DataFrames包中的Rvector类型
我正在尝试做一些非常简单的事情——只需在R中保存一个矩阵,并将其作为数组导入julia。这应该没那么难,但我正在努力操作访问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的元素填充它
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