相关疑难解决方法(0)

Python中'is'运算符的语义是什么?

is操作员如何确定两个对象是否相同?它是如何工作的?我找不到记录.

python

10
推荐指数
3
解决办法
8585
查看次数

函数`[<-`将_replace_一个元素,但不附加_element_

使用时注意到以下内容'[<-'.我成功地替换了元素,但没有在向量中添加元素.

例:

VarX <- integer()
VarX[1] <- 11
`[<-`(VarX, 2, 22)
VarX
# [1] 11

# Expected the value of VarX to be:  
# [1] 11 22

# Also tried: 
`[<-`(VarX, i=2, value=22)
VarX 
# [1] 11
Run Code Online (Sandbox Code Playgroud)

但是,如果索引中已存在值,则会替换该值.

VarX <- integer()
VarX[1] <- 11
VarX[2] <- 99
VarX
# [1] 11 99
`[<-`(VarX, 2, 22)
VarX
# [1] 11 22
Run Code Online (Sandbox Code Playgroud)

我只是简单地使用了语法错误,或者这是否符合预期?任何进一步了解这里发生的事情将不胜感激.

请注意,除了更好地理解语言之外,这里没有具体的目标.

关于@Roland和@Dason的评论的更新.

似乎行为与最初分配对象的值有关.例如,当分配给所述值VarX1:2相对于c(1, 2)的行为[<-(VarX, 2, …

r variable-assignment

8
推荐指数
1
解决办法
218
查看次数

测试两个`data.table`是否指向相同的内存位置

让我们:

DT1 <- data.table(iris)
DT2 <- DT1 # both reference the same memory location though
DT3 <- copy(DT1)
Run Code Online (Sandbox Code Playgroud)

问题:有没有办法检查是否DT2继续引用相同的内存位置DT1

像这样的伪函数:

mem.identical(DT2, DT1) # should return TRUE
mem.identical(DT3, DT1) # should return FALSE
Run Code Online (Sandbox Code Playgroud)

不幸的是,identical或者all.equal不为此目的而工作,因为

identical(DT1,DT3) # gives TRUE
Run Code Online (Sandbox Code Playgroud)

只有在引入一些变化后,才能使用identical以下方法检测差异:

DT1[,Test:=1] # introduces change to DT1 directly, to DT2 indirectly
identical(DT1,DT2) # TRUE - proves that DT2 is linked with DT1
identical(DT1,DT3) # FALSE - DT1 and DT3 are clearly decoupled
Run Code Online (Sandbox Code Playgroud)

r data.table

5
推荐指数
1
解决办法
121
查看次数

标签 统计

r ×2

data.table ×1

python ×1

variable-assignment ×1