【发布时间】:2017-10-24 21:43:24
【问题描述】:
我对朱莉娅很陌生,如果这是一个相当微不足道的问题,我深表歉意。但是我偶然发现了一个我无法解决的问题,因此感谢任何帮助/建议。
我有一个函数,当我运行它时,它会在数据框中返回一组值。大致如下:
(values) = function(data)
但是我在
中运行这个函数[例如见这里][1]
我在一个循环中运行这个函数,这样每次它运行时,我都会得到一组新的值。
for x = 1:5
(values) = function(data[data[:sub].==[x], :])
end
函数运行后,我想将返回的值放入具有完全相同列标题的“主”数据框中,并编译每次循环迭代返回的值。
这似乎非常棘手。我尝试使用append!,如下所述:
https://discourse.julialang.org/t/adding-a-new-row-to-a-dataframe/1331/3
但这不起作用。例如,如果我运行以下命令
(values_1) = function(data[data[:sub].==[1], :])
(values_2) = function(data[data[:sub].==[2], :])
append(values_1, values_2)
此操作失败并显示以下错误消息:
MethodError: no method matching append!(::Array{Float64,2}, ::Array{Float64,2})
Closest candidates are:
append!(::PyCall.PyObject, ::Any) at /Users/neil/.julia/v0.5/PyCall/src/PyCall.jl:836
append!(::Array{T,1}, ::Any) at collections.jl:21
append!{T}(::PyCall.PyVector{T}, ::Any) at /Users/neil/.julia/v0.5/PyCall/src/conversions.jl:278
in append!(::DataFrames.DataFrame, ::DataFrames.DataFrame) at /Users/neil/.julia/v0.5/DataFrames/src/dataframe/dataframe.jl:791
in include_string(::String, ::String) at ./loading.jl:441
in include_string(::String, ::String) at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?
请注意,该函数在我每次运行它时都会正确返回一个数据帧,它只是导致问题的值的串联。
感谢任何指针。 n
【问题讨论】:
-
仅供参考,等号左侧不需要括号,例如
values = f()有效,并且比(values) = f()更常用。