美文网首页
81.关于Base R中的for循环

81.关于Base R中的for循环

作者: 心惊梦醒 | 来源:发表于2021-10-30 07:30 被阅读0次

【上一篇:80.关于循环迭代】
【下一篇:82.关于使用for循环时的四种问题及解决方案】

常规的for 循环

    正如上文中的for循环示例,一个for循环包含三个部分:1)output;2)sequence;3)body

output <- vector("double", ncol(df))  # 1. output
for (i in seq_along(df)) {            # 2. sequence
  output[[i]] <- median(df[[i]])      # 3. body
}
output

    1)output:output <- vector("double", length(x)),在开始循环之前,你必须始终为输出分配足够的空间,这对效率来说非常重要:如果你使用c()(例如)在每次迭代时增加for loop,你的for循环将会非常慢。所以在这里,使用vector()函数创建了一个指定长度的向量。
    2)sequence:i in seq_along(df),for loop的每次run都将i赋给来自seq_along(df)的不同值。这里的i可以看做it。
    3)body:output[[i]] <- median(df[[i]]),每次迭代后的结果赋值。

for循环的变形

    上述基本的for循环包含三个部分,特点是输入长度已知,输出长度已知,基于索引进行循环对列进行操作,且输出是一个新的对象---一个新向量,这样的for循环远远不能满足我们的需要。因此,有了四种变形的for循环:
    1. Modifying an existing object, instead of creating a new object.(修改已存在的对象,而不是创建新对象)
    2. Looping over names or values, instead of indices.(基于names或values循环,而不是索引)
    3. Handling outputs of unknown length.(处理未知长度的输出)
    4. Handling sequences of unknown length.(处理未知长度的sequence-见上文的解释)

    这些变形很常见,下一篇将详细讲。

【上一篇:80.关于循环迭代】
【下一篇:82.关于使用for循环时的四种问题及解决方案】

相关文章

网友评论

      本文标题:81.关于Base R中的for循环

      本文链接:https://www.haomeiwen.com/subject/yfoyaltx.html