Coding style “什么是”呢;集合索引!“未定义”;朱莉娅的错误?

Coding style “什么是”呢;集合索引!“未定义”;朱莉娅的错误?,coding-style,julia,ijulia-notebook,Coding Style,Julia,Ijulia Notebook,当我运行代码时,我的代码setindex出现一个错误!未为WeakRefStrings.StringArray{String,1}定义 CSV文件 错误代码是 我正在与Jupter笔记本上的Julia 1.4.1一起工作!(集合、项目、索引…是collection[inds…]=item降低到的函数。错误源于这样一个事实,即CSV.read生成了一个不可变的集合。正如奥斯卡在回答中所说,setindex尝试改变其参数,即在适当位置更改列的内容。执行CSV.read()操作时,默认情况下会返回类型

当我运行代码时,我的代码setindex出现一个错误!未为WeakRefStrings.StringArray{String,1}定义

CSV文件

错误代码是


我正在与Jupter笔记本上的Julia 1.4.1一起工作!(集合、项目、索引…是
collection[inds…]=item
降低到的函数。错误源于这样一个事实,即
CSV.read
生成了一个不可变的集合。

正如奥斯卡在回答中所说,
setindex尝试改变其参数,即在适当位置更改列的内容。执行
CSV.read()
操作时,默认情况下会返回类型为
CSV.Column
的不可变列。这样做是出于性能原因,因为这意味着解析后不必复制列

要解决这个问题,您可以做两件事:

  • 传递关键字参数
    CSV.read(原始的“wikipediaEVDdatesconverted.CSV”,copycols=true)
    -这将复制列,从而使它们可变;或
  • 通过使用
    DataFrame((原始的“wikipediaevddatescoverted.csv”))实现同样的效果。
  • 第二种方式是首选方式,因为
    CSV.read
    将在
    CSV.jl
    包中被弃用


    您可以看到,它当前的实现基本上与我在源代码中的(2)中列出的相同。删除此方法将使
    CSV.jl
    不再依赖于
    DataFrames.jl

    也可以这样做

    col1dt=Vector{Dates.DateTime}(未定义,长度(col1))

    对于v=1:长度(col1) col1dt[v]=Dates.DateTime(col1[v],“d-u-y”) 结束

    using CSV
    EVDdata =CSV.read(raw"wikipediaEVDdatesconverted.csv")
    EVDdata[end-9:end,:]
    
    rows, cols = size(EVDdata)
    for j =1:cols
        for i = 1:rows
            if !isdigit(string(EVDdata[i, j])[1])
                EVDdata[i,j] = 0
            end
        end
    end