在这种情况下,R是创建一个新的数据帧还是只创建一个新列?
所以我知道r只在修改时复制,但我不确定只有部分零件被修改时哪些零件被复制 您可以使用TraceMe亲自查看复制的次数:在这种情况下,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
您可以使用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