首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多环境下的:=赋值

多环境下的:=赋值
EN

Stack Overflow用户
提问于 2020-05-26 09:24:29
回答 1查看 42关注 0票数 0

我有两个数据表,我把它们放在了一个函数中。我使用:=重新分配了一个列的值,但是它改变了该函数和全局环境中该列的值(参见代码)。

代码语言:javascript
复制
library(data.table)

# Example data
dt1 <- data.table(letters=letters[1:6],
                  value=1:6 + 0.0)
dt2 <- data.table(letters=c("b", "e"),
                  value=rnorm(2))

# Define a function so we perform := in separate environment
f <- function(df1, df2) {
  df1[df2, on="letters", value:=value-i.value]
}

# Run the function
f(dt1, dt2)

# Surprised to find it's updated dt1's value column
# despite dt1 being in a different environment
dt1

是否有一种方法可以让:=只在它正在使用的环境中分配?或者至少不会影响我工作的环境..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-26 10:41:45

在通过引用修改对象之前,我们可以在函数的主体中对对象进行copy

代码语言:javascript
复制
f <- function(df1, df2) {
  copy(df1)[df2, on="letters", value:=value-i.value]
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62018780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档