gpt4 book ai didi

r - 将新列添加到数据框列表,然后添加名称完整的 'unlist'?

转载 作者:行者123 更新时间:2023-12-05 03:29:00 26 4
gpt4 key购买 nike

我有许多要添加列的 df。为了 mrp,这些 dfs 被称为 df_1、df_2、df_3...

for (i in 1:10) {
assign(paste("df_",i,sep = ""),data.frame(x = rep(1,10), y = rep(2,10)))
}

我想为每个 dfs 添加另一列 z。

z <- rep("hello",10)

我怎样才能做到这一点?

使用 lapply 我已经能够做到这一点

q <- list()
for (i in 1:10) {
q[[i]] <- assign(paste("df_",i,sep = ""),data.frame(x = rep(1,10), y = rep(2,10)))
}
z <- rep("hello",10)
q <- lapply(q, cbind,z)

这会添加所需的列,但是,我不知道如何保留名称。我怎样才能仍然拥有 df_1、df_2 等,但每个都有一个新列 z?

提前致谢

最佳答案

使用 `[<-`() .

q <- lapply(q,`[<-`, 'z', value=rep("hello", 10))

给予

str(q)
# List of 10
# $ :'data.frame': 10 obs. of 3 variables:
# ..$ x: num [1:10] 1 1 1 1 1 1 1 1 1 1
# ..$ y: num [1:10] 2 2 2 2 2 2 2 2 2 2
# ..$ z: chr [1:10] "hello" "hello" "hello" "hello" ...
# $ :'data.frame': 10 obs. of 3 variables:
# ..$ x: num [1:10] 1 1 1 1 1 1 1 1 1 1
# ..$ y: num [1:10] 2 2 2 2 2 2 2 2 2 2
# ..$ z: chr [1:10] "hello" "hello" "hello" "hello" ...
# ...

这行得通,因为 `[<-`(df_1, 'z', value=z)类似于 df_1[['z']] <- z . (实际上我们使用的是 base:::`[<-.data.frame()` 。)

注意:您可能会得到 q使用 replicate 便宜一点:

n <- 3
q <- replicate(n, data.frame(x=rep(1, 3), y=rep(2, 3)), simplify=FALSE) |>
setNames(paste0('df_', 1:n))
q
# $df_1
# x y
# 1 1 2
# 2 1 2
# 3 1 2
#
# $df_2
# x y
# 1 1 2
# 2 1 2
# 3 1 2
#
# $df_3
# x y
# 1 1 2
# 2 1 2
# 3 1 2

关于r - 将新列添加到数据框列表,然后添加名称完整的 'unlist'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71092281/

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