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

Deleting column across data frames depending on location

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

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 与上例相同,但名称不同。

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

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]))