gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:57:52 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})

最后,在这些板上搜索 [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