如何删除R中多个数据框中的某些列?

Yus*_*sri 1 r dataframe

假设我有许多数据框,其中包含几乎相似列的不同名称.如何使用循环(或任何其他方式)操纵各个数据框的列?例如,我想一次删除所有数据帧的第一列.

akr*_*run 6

假设你有几个data.frames dat1,dat2,dat3,等不是个别数据集的工作,将它们放置在一个list并做处理.删除第一列后,如果仍需要原始data.frame对象来反映更改(不建议您可以在列表中进行所有分析),请使用list2env.

 lst <- mget(ls(pattern='^dat\\d+'))
 list2env(lapply(lst,`[`,-1), envir=.GlobalEnv)

 dat1
Run Code Online (Sandbox Code Playgroud)

如果你有不同的数据集名称D1,C1,datC,newDat等没有明确的常见模式(而不是从问题明确),那么你仍然可以手动创建一个列表(极端情况下)

 lst1 <- list(D1=D1, C1=C1, datc=datC, newDat=newDat)
Run Code Online (Sandbox Code Playgroud)

做的 list2env(lapply(...

或者将所有文件(如果所有文件都在工作目录中)直接读入列表并进行处理.

 files <- list.files() #if you want to read all the files in working directory
 lst2 <- lapply(files, function(x) read.table(x, header=TRUE))
 lapply(lst2,`[`,-1)
Run Code Online (Sandbox Code Playgroud)

数据

set.seed(24)
dat1 <- as.data.frame(matrix(sample(1:40, 5*3, replace=TRUE), ncol=5))
dat2 <- as.data.frame(matrix(sample(20, 3*5, replace=TRUE), ncol=3))
dat3 <- as.data.frame(matrix(sample(80, 2*10, replace=TRUE), ncol=2))
Run Code Online (Sandbox Code Playgroud)