删除函数内的数据框列

时间:2015-08-20 14:23:40

标签: r function dataframe

我有以下代码:

df<- iris

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)
    for (z in column.D) { 
      x[[z]] <- NULL #with this part I wanted to delete the above selected columns
    }
  }
}

columnFunction(df)

那么如何“动态”地处理data.frame列呢:x[[z]] <- NULL应该转换为:

df$Species <- NULL
df[["Species"]] <- NULL
df[,"Species"] <- NULL

以及为函数选择的每个data.frame中的每个选定列。 那么有谁知道如何存档这样的东西?我尝试过使用paste命令或sprintf, deparse之类的几件事,但我没有让它工作。我还使用<<-将data.frame作为全局变量处理,但也没有帮助。 (这是我第一次听说这个)。看起来我错过了将x和z转换为变量赋值的正确方法。

1 个答案:

答案 0 :(得分:1)

如果要创建一个从传递的数据框columnFunction中删除列的函数df,您需要做的就是将数据框传递给函数,返回修改后的版本{{ 1}},并将df替换为结果:

df