Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 数据帧字符串值的明显问题_Variables_Dataframe_Reference_Julia - Fatal编程技术网

Variables 数据帧字符串值的明显问题

Variables 数据帧字符串值的明显问题,variables,dataframe,reference,julia,Variables,Dataframe,Reference,Julia,我不确定这是否是一个实际的问题,或者我只是没有以正确的方式做一些事情,但目前我觉得这有点奇怪 在使用数据帧时,我遇到了一个问题:如果将DataFrame复制到另一个变量,那么对其中一个变量所做的任何更改都会同时更改这两个变量。这也适用于各个列。例如: julia>x=DataFrame(A=[“粉色”、“蓝色”、“绿色”],B=[“黄色”、“红色”、“紫色”); julia>y=x; julia>x[x.A.=“蓝色”,“红色”; 朱莉娅>x 3×2数据帧 │ 一行│ A.│ B│ ├─────

我不确定这是否是一个实际的问题,或者我只是没有以正确的方式做一些事情,但目前我觉得这有点奇怪

在使用数据帧时,我遇到了一个问题:如果将
DataFrame
复制到另一个变量,那么对其中一个变量所做的任何更改都会同时更改这两个变量。这也适用于各个列。例如:

julia>x=DataFrame(A=[“粉色”、“蓝色”、“绿色”],B=[“黄色”、“红色”、“紫色”);
julia>y=x;
julia>x[x.A.=“蓝色”,“红色”;
朱莉娅>x
3×2数据帧
│ 一行│ A.│ B│
├─────┼───────┼────────┤
│ 1.│ 粉红色│ 黄的│
│ 2.│ 红色│ 红色│
│ 3.│ 绿色│ 紫色│
茱莉亚
3×2数据帧
│ 一行│ A.│ B│
├─────┼───────┼────────┤
│ 1.│ 粉红色│ 黄的│
│ 2.│ 红色│ 红色│
│ 3.│ 绿色│ 紫色│
列也会发生类似的情况,因此,如果像上面那样设置A
DataFrame
,但在将两者合并到数据帧之前使用
B=A
,那么如果一列中的值发生更改,另一列中的值也会自动更改

这对我来说似乎很奇怪,也许这是其他编程语言的一个特性,但我在R中多次做了与上述相同的事情,备份数据表或在列之间交换数据,从未见过这个问题。所以问题是,它是否按设计工作,是否有在数据帧之间复制值的正确方法


我使用的是Julia版本0.7.0,因为我最初通过Manjaro存储库安装了1.0.0,并且在尝试构建Tk时遇到了问题。

命令
y=x
不会创建新对象;它只是为相同的
DataFrame
创建一个新引用(或名称)

您可以通过调用
y=copy(x)
来创建副本。在您的情况下,这仍然不起作用,因为它只复制数据帧本身,而不复制其中的变量

如果您想要一个完全独立的新对象,可以使用
y=deepcopy(x)
。在这种情况下,
y
将不引用
x

有关更详细的讨论,请参阅此线程:


有一个很好的例子描述了这种可能性。正如您所发现的,知道何时制作了一个真正的副本,而不是指向相同数据的另一个“指针”,这一点很重要。谢谢您。当我搜索DataFrame帮助时,它没有出现,只有原始的DataFrames.jl页面似乎没有回答这个问题。欢迎访问!请看一看——如果格式正确,代码可读性会更好。太好了!非常感谢。在来到这里之前,我已经在网上搜索了DataFrames的这个问题,但没有找到任何东西。这个问题使我困惑不解,因为我出身于一个贫穷的家庭。您还预先解决了使用copy()的问题,因为我在阅读并尝试了前一位撰稿人留下的信息后,回到这里添加了一条评论:)不客气,很高兴我能提供帮助!如果答案解决了您的问题,请将其标记为“已接受”好吗?