【问题标题】:How do convert a vector made of vectors in R to a single vector?如何将由 R 中的向量组成的向量转换为单个向量?
【发布时间】:2018-09-06 14:09:34
【问题描述】:

我正在开发一个棒球分析程序,该程序从互联网上的多个网页获取数据。为了简化我的工作,我使用 for 循环逐页浏览并将我需要的所有数据收集到一个向量中。像这样:

player_html <- c()
for(i in 1:28){
  player_html[[i]] <- html_nodes(...)
}
players <- c()
for(i in 1:28){
  players[[i]] <- html_text(...)

这个例子展示了它如何遍历 28 个不同的网页并在每个页面中提取 50 个玩家的名字。代码编译完成后,“players”变量在全局环境中被列为“28 个列表”,但 28 个位置中的每个位置都填充了不超过 50 个名称。我希望它是 1400 而不是 28 的列表,因此我可以将其放入数据框中并阻止 R 返回错误,指出“参数意味着不同的行数”。

【问题讨论】:

  • 您可以unlist(players) 返回来自list 的所有条目的向量。

标签: r loops for-loop vector


【解决方案1】:

您可以直接在 for 循环中创建包含所有结果的数据框,每次迭代将附加结果附加到输出数据框。像这样:

results <- data.frame(matrix(nrow = 0, ncol=2))
colnames(results) <- c("playername", "page")
player_html <- c()
currnames <- c()

for(i in 1:28){
  html_text() <-  html_nodes(...)
  currnames <- html_text()
  results <- rbind(results, data.frame(playername=currnames, page=i))
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 2016-05-19
    相关资源
    最近更新 更多