【问题标题】:R a collection of kmeans objectsR kmeans 对象的集合
【发布时间】:2013-04-08 03:29:10
【问题描述】:

我是 R 新手,我的大部分经验都是在 Java 方面。我正在尝试执行以下操作:

clusterWeeks <- function()
{
  kmV = list()               #a list of kmeans objects from each week
  for(i in 1:5)
  {
    windows()
    kmV.append(clusterData(i))     #clusterData(i) returns a kmeans object
  }
}

由于某种原因,这不起作用。然后我希望能够通过kmV[1], kmV[2], ... kmV[5]访问对象

  1. R 中适合此任务的数据结构是什么?

【问题讨论】:

    标签: r list collections vector k-means


    【解决方案1】:

    您需要创建一个列表来保存每个单独的对象。否则你只是覆盖并只返回最后一个:

    clusterWeeks <- function()
    {
      kmV = vector("list", 5)         # a 5 element list of empty items
      for(i in 1:5)
      {
        windows()
        kmV[[i]] <- clusterData(i)    #clusterData(i) returns a kmeans object
      }
    }
    

    您显然来自一种语言,其中object.function 是可接受的语法,但在 R 中不起作用。

    【讨论】:

      【解决方案2】:

      根据您的代码,我会这样做:

      clusterWeeks <- function(){
        kmV <- c()
        for(i in 1:5)
        {
          kmV <- c(kmV, i)
        }
        return(kmV)
      }
      

      小例子:

      test <- clusterWeeks()
      test[2]
      2
      

      【讨论】:

      • 使用c(old, new) 对小列表很好,但如果列表已经预先分配,则按位置分配会更有效。
      猜你喜欢
      • 2015-12-03
      • 2021-07-18
      • 2020-09-28
      • 1970-01-01
      • 2014-06-24
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      相关资源
      最近更新 更多