gpt4 book ai didi

r - 使用 R : colnames() in for loop to change sequential datasets

转载 作者:行者123 更新时间:2023-12-02 21:56:44 24 4
gpt4 key购买 nike

我有多个名为 y1 到 y13 的数据框 - 每个数据框一列。它们都有一个列名,我想将其更改为“Date.Code”。我在 for 循环中尝试了以下操作:

for(i in 1:13){
colnames(get(paste("y", i, sep=""))) <- c("Date.Code")
}

这不起作用。

我也尝试过:

for(i in 1:13){
assign(("Date.Code"), colnames(get(paste("y", i, sep=""))))
}

同样没有运气。

有什么建议吗?

谢谢,E

最佳答案

这里的困难是你不能使用 get直接使用赋值运算符
例如,get(nm) <- value不管用。您可以按照您的尝试使用分配,但方式略有不同。

假设cn是您要更改其名称的列号

for(i in 1:13){
nm <- paste0("y", i)
tmp <- get(nm)
colnames(tmp)[cn] <- c("Date.Code")
assign(nm, tmp)
}



话虽如此,解决此问题的一种更简洁的方法是将所有 DF 收集到一个列表中,然后您可以轻松使用 lapply对它们进行操作。例如:

# collect all of your data.frames into a single list. 
df.list <- lapply(seq(13), function(i) get(paste0("y", i)))

# now you can easily change column names. Note the `x` at the end of the function which serves
# as a return of the value. It then gets assigned back to an object `df.list`
df.list <-
lapply(df.list, function(x) {colnames(x)[cn] <- "Date.Code"; x})

最后,在这些版 block 中搜索[r] data.table您将看到许多通过引用更改值和更直接地设置属性的选项。

关于r - 使用 R : colnames() in for loop to change sequential datasets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17643846/

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