【问题标题】:r - Assign output of functions to vectorr - 将函数的输出分配给向量
【发布时间】:2016-02-15 20:59:05
【问题描述】:

我想对从 1 到 10 的多项式进行多项式回归:

library(ISLR)
attach(Auto)

myvec <- vector(length=10)
for (i in 1:length(myvec)){
    myvec[i]<-lm(mpg~poly(acceleration, i, raw=TRUE))
}

但是 summary(myvec[3]) 不同于: summary(var1 &lt;- lm(mpg~poly(acceleration, 3, raw=TRUE)))

如何将函数的输出放入具有原始输出类型的向量中?

【问题讨论】:

    标签: r


    【解决方案1】:

    这样做,它应该可以工作:

    mylist.names <- rep("A",10)
    mylist <- vector("list", length(mylist.names))
    names(mylist) <- mylist.names
    
    for (i in 1:length(mylist)){
      mylist[[i]]<-lm(mpg~poly(acceleration, i, raw=TRUE))
    }
    

    【讨论】:

    • 所以你创建了列表向量,然后把 lm 的输出放在那里。为什么要按 [[i]] 索引?我看到 mylist[[i]] 与 mylist[i] 相同,mylist[i] 是第一个向量的第 i 部分。
    • 试试class(mylist)。它实际上不是向量。这是一个列表。我在开始循环之前所做的只是创建一个包含 10 个空条目的列表的小技巧。您也可以只执行mylist &lt;- list() 并让循环从 1 运行到 10。这是一个问题,讨论我认为您担心 stackoverflow.com/questions/2050790/… 的事情。
    • 作为(另一个)@Alex 注释,vector(mode= "list", ...) 创建一个列表....我相信您可以使用mylist &lt;- lapply(mylist, function(i) {lm(mpg~poly(acceleration, i, raw=TRUE))}) 代替 for 循环(尽管我还没有测试过。
    猜你喜欢
    • 1970-01-01
    • 2019-02-09
    • 2017-09-28
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 2023-03-22
    相关资源
    最近更新 更多