R 根据位置跨数据帧删除列

R 根据位置跨数据帧删除列,r,list,dataframe,apply,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(i

我有一组与以下示例对应的数据帧:

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)

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

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

我正要说“或使用列表”:)类似于你的方法是
l谢谢,我同意,原则上,从循环中的所有数据帧中删除变量不是最安全的选择,在这种特殊情况下,数据帧是自动生成的,不需要的变量总是插入到
df
中,因此我希望使用循环。@Konrad为什么不将自动生成的数据帧设置为存储在列表中?当然可以,每个
df
都是通过
read.csv
导入的,因此我可以在导入字符串的循环中运行它,然后应用函数删除列。@Konrad yep,这也是我要做的。使用lappy比使用循环更容易:
dfs
var_names <- paste0("df", 1:3)
lapply(var_names, function(n) assign(n, get(n)[, -3]))