保存for循环产生的不同对象

时间:2015-12-15 17:32:43

标签: r for-loop save

我正在尝试保存for循环产生的不同对象。

这是我需要的矩阵和子集:

N.rows <- nrow(df)
for(i in 1:N.rows){      
  rnd.more <- do.call( rbind, lapply( split(df.more, df.more$Site) ,
                                    function(df.more) df.more[sample(nrow(df.more), 1,replace=FALSE) , ] )  
  )
  print(rnd.more)
  rnd.df <- rbind(df.1,rnd.more)                                   
  rnd.df.bc <- as.matrix(vegdist(rnd.df[1:4], method="bray"))  
  clustering <- agnes(rnd.df.bc, diss=TRUE, method = "ward")        
  print(clustering)
  grps.iter <-cutree(as.hclust(clustering), k=3)                     
  print(grps.iter)
}

这里是循环函数的脚本,我遇到了问题:

from bs4 import BeautifulSoup
import requests
req=requests.get("http://www.aflcio.org/Legislation-and-Politics/Legislative-Alerts")
data=req.text
soup=BeautifulSoup(data)
letters=soup.find_all("div",class_="ec_statements")
print(letters)

问题:

1)脚本在整体上没有按照我的意愿工作,因为'do.call'函数为我提供了一个数据框而没有保留行名。因此,对于以下结果,我无法确定我的观察结果。

2)我想保存输出。如果不可能立即执行(它们有不同的形式),可能单独作为“rnd.more”,“clustering”和“grps.iter”

我试过调查其他问题/回复,但我不明白该怎么做......

感谢您的帮助。怜悯我,我是一个自学R用户......(并不太好!)

1 个答案:

答案 0 :(得分:1)

1)您已将rownames放入ID列。跟踪问题解决了。

2)使用清单。

library(cluster)
library(vegan)

out <- vector("list", N.rows)
for(i in 1:N.rows){      
    rnd.more <- do.call("rbind", lapply(split(df.more, df.more$Site),
                                        function(df.more) df.more[sample(nrow(df.more), 1,replace=FALSE) , ])
                        )
    rnd.df <- rbind(df.1,rnd.more)                                   
    rnd.df.bc <- as.matrix(vegdist(rnd.df[1:4], method="bray"))  
    clustering <- agnes(rnd.df.bc, diss=TRUE, method = "ward")        
    grps.iter <-cutree(as.hclust(clustering), k=3)                     
    out[[i]] <- list(rnd = rnd.df, clustering = clustering, grps = grps.iter)
}

# see clustering in first element
out[[1]]$clustering

# extract clustering
all.clusters <- lapply(out, "[[", "clustering")
all.clusters