gpt4 book ai didi

r - 这是循环的有效实现吗?

转载 作者:行者123 更新时间:2023-12-02 06:06:33 25 4
gpt4 key购买 nike

似乎 R 中涉及循环的每个问题都会遇到“循环不好”和“你做错了”,并建议使用 list , 或 tapply或者什么的。

我正在学习 R,并实现了以下循环来为每个因子级别创建图像文件,每次运行时因子级别的数量都会改变:

for(i in unique(df$factor)) {
lnam <- paste("test_", i, sep="")
assign(lnam, subset(df, factor==i))
lfile <- paste(lnam, ".png", sep="")
png(file = lfile, bg="transparent")
with(get(lnam), hist(x, main = paste("Histogram of x for ", i, " factor", sep="")))
dev.off()
}

这有效。我想将其扩展为可能对这些子组运行各种测试(也输出到文件)等。

这是循环的有效和合法使用吗?或者有没有更好的方法来给这只猫剥皮?

最佳答案

一般来说,循环没有任何问题。有时,特别是当您处理文件或调用函数以获得副作用而不是输出时,循环比 *apply 更容易理解。调用。但是,当您使用循环来模拟可以向量化的操作时,它通常会慢得多,因此建议避免它们。

不过,对于您的具体示例,我会发表以下评论:

  • 如果你想对一个因子中的每个级别做一些事情,使用 levels(factor) 更直接。而不是 unique(factor) .
  • 您不需要专门为每个因子级别创建新的数据框。

  • 考虑到这一点:
    for(i in levels(df$factor))
    {
    lf <- paste("test_", i, ".png", sep="")
    png(file=lf, bg="transparent",
    with(subset(df, factor == i), hist(x, ....)
    dev.off()
    }

    关于r - 这是循环的有效实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8831190/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com