我有以下代码:
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转换为变量赋值的正确方法。
答案 0 :(得分:1)
如果要创建一个从传递的数据框columnFunction
中删除列的函数df
,您需要做的就是将数据框传递给函数,返回修改后的版本{{ 1}},并将df
替换为结果:
df