在Dataframe上迭代以添加一个

在Dataframe上迭代以添加一个,dataframe,julia,Dataframe,Julia,这是在Julia 1.1.1中完成的 在Windows 10计算机上 我正在使用数据帧df,pmid作为行名,unique(features)作为列名。此外,我还有另一个变量pmid,pmid[I]对应于特征[I] 我试图在这个数据帧上迭代,每个单元格都是0。根据功能是否显示,向单元格中添加1,以计算每个pmid中功能的提及次数。为了做到这一点,我使用了以下for循环 feature_ids = unique(features) df = hcat(df, initialize_df(featu

这是在Julia 1.1.1中完成的 在Windows 10计算机上

我正在使用数据帧df,pmid作为行名,unique(features)作为列名。此外,我还有另一个变量pmid,pmid[I]对应于特征[I]

我试图在这个数据帧上迭代,每个单元格都是0。根据功能是否显示,向单元格中添加1,以计算每个pmid中功能的提及次数。为了做到这一点,我使用了以下for循环

feature_ids = unique(features)
df = hcat(df, initialize_df(feature_ids, nrow(df), 0))
for i in 1:length(features)
  pmid = pmids[i]
  feature = features[i]
  df[df[:,:pmid] .== pmid, Symbol(feature)] .+= 1
end

然而,在julia v0.6.2中,这是有效的,在julia v1.1.1中,当我查看数据帧时,在for循环之后,它仍然由零填充。任何关于我做错了什么的想法

这很可能是应该解决的问题:

for i in 1:length(features)
  pmid = pmids[i]
  feature = features[i]
  v = view(df, df[:,:pmid] .== pmid, Symbol(feature))
  v .+= 1
end
你的代码不是完全可复制的,所以我无法测试它。在几个小时内(希望如此),我将发布DataFrames.jl包的新版本,您的旧代码将按预期工作


编辑:在DataFrames.jl v0.19下,您的旧代码应该可以正常工作。

您可以分享一组说明来生成数据的婴儿版本吗?使用新代码时,我收到以下错误。错误:LoadError:LoadError:语法:无效的分配位置“视图(df,(df[:,:pmid]。==pmid),符号(功能))”已修复。在DataFrames.jl 0.19发布后,我还将更新答案。更新视图修复了该问题。谢谢。添加-请检查DataFrames.jl v0.19下的旧代码是否正确工作(应该正确)。