gpt4 book ai didi

r - 更改多个列表的列表元素名称

转载 作者:行者123 更新时间:2023-12-02 07:17:39 24 4
gpt4 key购买 nike

我想在列表中操作命名向量,并为大量类似命名的列表执行此操作。具体来说,我的列表是 glm 的结果,我想更改 coefficients 列表元素的名称。

这是一个玩具示例:

model_1 <- glm(Petal.Width ~ Sepal.Length*Sepal.Width, data = iris)
model_2 <- glm(Petal.Length ~ Sepal.Length*Sepal.Width, data = iris)

一个列表所需的操作:

names(model_1$coefficients) <- c("Constant", "Length", "Width", "Length * Width")

现在尝试对两个列表执行此操作:

for (i in 1:2) {
list_name <- paste("model", i, sep = ""),
names(list_name$coefficients) <- c("Constant", "Length", "Width", "Length * Width")
}

当然,这不起作用,因为 R 试图计算一个名为“list_name”的列表。我怎样才能让它评估名为“list_name”变量的列表?

最佳答案

虽然之前的两个答案都包含针对您的特定问题的有效解决方案,但我强烈建议您使用列表作为所有模型的容器,因为这将使它们的整体处理更加容易。

models <- list()
models$m_1 <- glm(Petal.Width ~ Sepal.Length*Sepal.Width, data = iris)
models$m_2 <- glm(Petal.Length ~ Sepal.Length*Sepal.Width, data = iris)

coefNames <- c("Constant", "Length", "Width", "Length * Width")

models <- lapply(models, function(x) {
names(x$coefficients) <- coefNames
x })

或者在 tidyverse 中:

models <- map(models, ~  { 
.$coefficients <- set_names(.$coefficients, coefNames)
. })

或者,最简单的解决方案,使用 for 循环:

for(i in 1:length(models)) {
names(models[[i]]$coefficients) <- coefNames
}

或者,假设您有一系列模型:

selmods <- paste0("m_", 1:2)
for(i in selmods) {
names(models[[i]]$coefficients) <- coefNames
}

关于r - 更改多个列表的列表元素名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57023089/

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