删除data.frame列并循环访问data.frame赋值函数

时间:2015-08-21 10:30:52

标签: r loops dataframe

我在stackoverflow找到了以下代码here

library(svDialogs)
    columnFunction <- function (x) {
      column.D <- dlgList(names(x), multiple = T, title = "Spalten auswaehlen")$res
      if (!length((column.D))) {
        cat("No column selected\n")
      } else {
        cat("The following columns are choosen:\n")
        print(column.D)
        x <- x[,!names(x) %in% column.D]
      }
      return(x)
    }

    df <- columnFunction(df)

所以我想把它用于我自己的建议,但它并没有按计划进行。 我尝试归档的是在for looplapply中使用它来与多个data.frames一起使用。其中我尝试过:

d.frame1 <- iris
d.frame2 <- cars

l.frames <- c("d.frame1","d.frame2")

for (b in l.frames){
  columnFunction(b)
}

但它会产生以下错误消息:

Error in dlgList(names(x), multiple = T, title = "Spalten auswaehlen")$res : 
  $ operator is invalid for atomic vectors

嗯,我还需要的是我可以循环使用该函数,以便我可以遍历不同的data.frames。 最后但并非最不重要的是我需要类似的东西:

for (xyz in l.frames){

xyz <- columnFunction(xyz)
}

自动执行保存步骤。

有没有人知道如何循环使用该函数或如何更改函数以便它执行所有这些步骤并且是loopable。 我对R很新,所以也许我错过了一些明显的东西。

1 个答案:

答案 0 :(得分:0)

lapply专为此任务而设计:

l.frames <- list(d.frame1, d.frame2)
l.frames <- lapply(l.frames, columnFunction)

如果您坚持使用for循环:

for (i in seq_along(l.frames)) l.frames[[i]] <- columnFunction(l.frames[[i]])