根据位置删除数据框中的列

时间:2015-07-06 16:06:30

标签: r list dataframe apply

我有一组与下面的示例相对应的数据框:

df1 <- data.frame(id=1:10, relevant_values=11:20, rubbish = runif(n = 10), 
                  important_as_well = 11:20)
df2 <- data.frame(id=1:10, something_important=11:20, not_relevant = runif(n = 10))
df3 <- data.frame(id=1:10, may_be_valid=11:20, nonsense = runif(n = 10),
                  crucial=11:20)

我想循环浏览这些数据集并删除列rubbishnot_relevantnonsense。这些列始终位于数据集的相同位置3,如上例所示,但名称不同。

1 个答案:

答案 0 :(得分:1)

您可以使用否定索引删除第三列:

df1 <- df1[, -3]
df2 <- df2[, -3]
df3 <- df3[, -3]

我建议不要以编程方式循环访问这些变量,如果你想对每个变量执行相同的操作,建议你将它们保存在列表中。但是,如果您确实想要访问它们,可以使用getassign

var_names <- paste0("df", 1:3)
lapply(var_names, function(n) assign(n, get(n)[, -3]))