Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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
在这种情况下,R是创建一个新的数据帧还是只创建一个新列?_R - Fatal编程技术网

在这种情况下,R是创建一个新的数据帧还是只创建一个新列?

在这种情况下,R是创建一个新的数据帧还是只创建一个新列?,r,R,所以我知道r只在修改时复制,但我不确定只有部分零件被修改时哪些零件被复制 您可以使用TraceMe亲自查看复制的次数: 您可以使用tracemem亲自查看复制的次数: 根据dplyr::location,只有一个新的列—a和b仍然引用相同的x列R3.6.1 根据dplyr::location使用.Internalinspecta和.Internalinspectb时的结果相同。仅一个新列-a和b仍然引用相同的x列R3.6.1 使用.Internalinspecta和.Internalinspec

所以我知道r只在修改时复制,但我不确定只有部分零件被修改时哪些零件被复制

您可以使用TraceMe亲自查看复制的次数:


您可以使用tracemem亲自查看复制的次数:

根据dplyr::location,只有一个新的列—a和b仍然引用相同的x列R3.6.1

根据dplyr::location使用.Internalinspecta和.Internalinspectb时的结果相同。仅一个新列-a和b仍然引用相同的x列R3.6.1

使用.Internalinspecta和.Internalinspectb时的结果相同

a <- data.frame(x=1:100, y = 100:1)
b <- a # just the reference is copied
b$y <- 1:100 # is a new data frame created. Or just a new column, i.e. both a and b still reference the same x column?
> a <- data.frame(x=1:100, y = 100:1)
> tracemem(a)
[1] "<0x7fdf7ff93248>"
> b <- a
> b$y <- 1:100
tracemem[0x7fdf7ff93248 -> 0x7fdf82e58088]: 
tracemem[0x7fdf82e58088 -> 0x7fdf82e57dc8]: $<-.data.frame $<- 
tracemem[0x7fdf82e57dc8 -> 0x7fdf82e57d88]: $<-.data.frame $<- 
a <- data.frame(x=1:100, y = 100:1)

b <- a
dplyr::location(a)
#<0x55dce5555688>
#Variables:
# * x:         <0x55dce68d7c98> ##
# * y:         <0x55dce68d7bb8> ##
#Attributes:
# * names:     <0x55dce55558c8>
# * class:     <0x55dce68d3160>
# * row.names: <0x55dce5718b58>
dplyr::location(b)
#<0x55dce5555688>
#Variables:
# * x:         <0x55dce68d7c98> ##
# * y:         <0x55dce68d7bb8> ##
#Attributes:
# * names:     <0x55dce55558c8>
# * class:     <0x55dce68d3160>
# * row.names: <0x55dce654e5b8>

b$y <- 1:100
dplyr::location(a)
#<0x55dce5555688>
#Variables:
# * x:         <0x55dce68d7c98> ##
# * y:         <0x55dce68d7bb8> ##
#Attributes:
# * names:     <0x55dce55558c8>
# * class:     <0x55dce68d3160>
# * row.names: <0x55dce65708a0>
dplyr::location(b)
#<0x55dce5b82378>
#Variables:
# * x:         <0x55dce68d7c98> ##
# * y:         <0x55dce65635c0> ##
#Attributes:
# * names:     <0x55dce55558c8>
# * row.names: <0x55dce65d3040>
# * class:     <0x55dce68d3160>

dplyr::changes(a, b)
#Changed variables:
#          old            new           
#y         0x55bb19b3fbb8 0x55bb1a3636d0
#
#Changed attributes:
#          old            new           
#row.names 0x55bb197c3b38 0x55bb197cc190