循环遍历R中的列表

时间:2014-02-06 19:26:23

标签: r loops

我正在尝试在R中创建3个不同的.png图像并将它们保存到3个不同的文件 - 一次全部。

以下代码创建1张图像然后停止。为什么不是其他2张图片?

“MatrixFunction”是我自己的函数,需要df,列号,标题。每种测试类型也是数据框的名称。

谢谢。

testtype <- list("Grade4TopBottom", "Grade8TopBottom", "HSPATopBottom")

for(i in testtype){

    mypath <- paste("testing", testtype)
    png(mypath, width=1336, height=656)
    MatrixFunction(get(i), 8:19, "Title")
    dev.off()
}

2 个答案:

答案 0 :(得分:3)

您一遍又一遍地覆盖您的文件。有一个明显的拼写错误:mypath <- paste("testing", i)。在这种情况下,您将创建树形文件而不是一个。

答案 1 :(得分:2)

避免for - R中的循环。他们臭名昭着。

如果您将方法创建为函数,则可以更轻松地检查错误,并且可以对其应用lapplysapply

testtype <- list("Grade4TopBottom", "Grade8TopBottom", "HSPATopBottom")
make.image <- function(n) {    
    obj <- mget(n, ifnotfound=NA)[[1]]
    if (is.na(obj)) return(FALSE)
    mypath <- paste("testing", n)
    png(mypath, width=1336, height=656)
    MatrixFunction(obj, 8:19, "Title")
    dev.off()
    return(TRUE)
}
# test:
make.image('Grade4TopBottom')  # should return TRUE
make.image('Nope')             # should return FALSE
sapply(testtype, make.image)