gpt4 book ai didi

r - 更新列表中的 data.tables

转载 作者:行者123 更新时间:2023-12-01 04:27:11 25 4
gpt4 key购买 nike

我想将一个函数应用于 data.tables 列表以更新几列。问题是列表中的 data.tables 最终都发生了相同的变化。这是一个可重现的示例:

library(data.table)
data("mtcars")
setDT(mtcars)


# Replicate dts in a list
dt_list <- rep(list(mtcars), 4)

# My Function
update_dt <- function(i){
# new column
dt_list[[i]][, newcol := i]

# Updating column
dt_list[[i]][, mpg:= mpg + ((i-1)* 100)]
}

# Apply function
lapply(X= 1:length(dt_list), FUN= update_dt)

在这种情况下,我 dt_list 中的所有 data.tables最终相同

最佳答案

正如@r2evans 在评论中提到的,通过复制 data.table,您只是在复制引用。相反,复制 data.frame 并将其设置为 data.table 作为函数的一部分。

library(data.table)
data("mtcars")



# Replicate dts in a list
dt_list <- rep(list(mtcars), 4)


# My Function
update_dt <- function(i){
setDT(dt_list[[i]]) # Set as DT inside function
# new column
dt_list[[i]][, newcol := i]

# Updating column
dt_list[[i]][, mpg:= mpg + ((i-1)* 100)]
}

# Apply function
lapply(X= 1:length(dt_list), FUN= update_dt)

关于r - 更新列表中的 data.tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57549369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com