【问题标题】:R- For loop for non-sequential listR-非顺序列表的For循环
【发布时间】:2017-03-04 10:09:53
【问题描述】:

这可能是一个简单的问题,但我正在努力寻找一种方法来执行相当于“for (i in 1:10){ do something}”但使用字符串列表的方法。例如:

给定一个字符串列表 a = ("Joe", "John", "George") 我想做以下事情:

for (a in "Joe":"George"){
  url <- paste0(http://www.website.com/", a)
  readHTMLTable(url)
}

并让函数遍历名称列表并使用每个名称点击 url。 谢谢。

【问题讨论】:

  • 绝对使用lapply 而不是for,这样您的结果就会出现在列表中。字符串之间的: 也不起作用;使用您存储它们的变量。

标签: r string for-loop nonsequential


【解决方案1】:

在 paste0 函数中使用 ""

a = c("Joe", "John", "George")

for (i in 1:length(a)){
  url <- paste0("http://www.website.com/", a)
      readHTMLTable(url)
}

lapply(a, function(x){paste0("http://www.website.com/", x)})
[[1]]
[1] "http://www.website.com/Joe"

[[2]]
[1] "http://www.website.com/John"

[[3]]
[1] "http://www.website.com/George"

sapply(a, function(x){paste0("http://www.website.com/", x)})

Joe                            John                          George 
"http://www.website.com/Joe"   "http://www.website.com/John" "http://www.website.com/George" 

【讨论】:

    【解决方案2】:

    您会选择for (i in 1:length(a)) { etc },但是出于速度原因,您通常更喜欢应用函数。

    【讨论】:

    • Idk 我从未尝试过,效果很好,谢谢。那么 lapply 是否会类似于
    • a
    • 抱歉,我无法停止按 Enter。
    • a
    • b &lt;- lapply(a, FUN = function(x) { url &lt;- paste0(http://www.website.com/", x) return(readHTMLTable(url)) } 会(我认为)为您提供表列表,然后您可以将其绑定到 data.frame 或其他任何内容中。未经测试
    猜你喜欢
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    相关资源
    最近更新 更多