我试图从多个(28)数据帧中删除相同数量的行,每个数据帧长度各不相同。这里有一个玩具数据集来说明我的意思:删除/处理多个数据帧中的行
df1 <- data.frame(
var1 = c(1,2,3,4,5),
var2 = c(2,4,6,8,10)
)
df2 <- data.frame(
var3 = c(1,2,3,4,5,6,7),
var4 = c(2,4,6,8,10,12,14)
)
df3 <- data.frame(
var5 = c(1,2,3,4,5,6,7,8,9,10),
var6 = c(2,4,6,8,10,12,14,16,18,20)
)
我写了一个函数(下)要做到这一点,这对个人dataframes工作:
remove_rows <- function(x){
x[c(3:nrow(x)),]
}
我再创建一个列表的数据框使用df_list <- ls()
,并尝试使用lapply(df_list, function(x) remove_rows(x))
在列表中的每个项目上运行该功能,但我一直收到此错误:Error in 3:nrow(x) : argument of length 0
。
我认为这是因为我的函数试图对我的列表中的项目起作用,而不是我列表中的项目名称所代表的数据框,但我无法弄清楚如何改变它。
我也试过了for
循环(下面)的hacky方法,它也失败了。
for (i in 1:length(df_list)){
name <- df_list[i]
assign(name, remove_rows(df_list[i]))
}
谢谢,但是因为我的数据框都有不同的名称(例如不只是df1,df2,df3等)/有很多它们,我不能像'list(df1,df2,df3)那样手动创建一个列表' 。 – cstaff91
其实,解决它使用[这个答案](http://stackoverflow.com/questions/14954399/put-multiple-data-frames-into-list-smart-way) – cstaff91