R 获取数据帧列表中每列前10个值
我有一个列和行长度不均匀的数据帧列表,我想以最快的方式只提取每列的前10个元素 例如:R 获取数据帧列表中每列前10个值,r,dataframe,R,Dataframe,我有一个列和行长度不均匀的数据帧列表,我想以最快的方式只提取每列的前10个元素 例如: ex1 = data.frame(a = 1:20, b = 31:40) ex2 = data.frame(a = 1:100) ex3 = data.frame() list = c() list[[1]] = ex1; list[[2]] = ex2; list[[3]] = ex3 输出应该是一个数据帧列表,每个列只有顶部和底部的10个值。对于ex1,它看起来像是一个包含a列和b列的数据帧。a将有1
ex1 = data.frame(a = 1:20, b = 31:40)
ex2 = data.frame(a = 1:100)
ex3 = data.frame()
list = c()
list[[1]] = ex1; list[[2]] = ex2; list[[3]] = ex3
输出应该是一个数据帧列表,每个列只有顶部和底部的10个值。对于ex1,它看起来像是一个包含a列和b列的数据帧。a将有1-10和10-20,列表[[2]]将包含元素为1:10和90:100的数据帧,列表[[3]]将为空
谢谢 一个选项是使用head和tail并绑定相应的行
lapply(list, function(x) rbind(head(x, 10), tail(x, 10)))
#[[1]]
# a b
#1 1 31
#2 2 32
#3 3 33
#4 4 34
#5 5 35
#6 6 36
#7 7 37
#8 8 38
#9 9 39
#10 10 40
#11 11 31
#12 12 32
#13 13 33
#14 14 34
#15 15 35
#16 16 36
#17 17 37
#18 18 38
#19 19 39
#20 20 40
#
#[[2]]
# a
#1 1
#2 2
#3 3
#4 4
#5 5
#6 6
#7 7
#8 8
#9 9
#10 10
#91 91
#92 92
#93 93
#94 94
#95 95
#96 96
#97 97
#98 98
#99 99
#100 100
#
#[[3]]
#data frame with 0 columns and 0 rows
考虑使用head和tail,但这需要对数据帧进行排序。一种解决方案是使用order函数,但据我所知,它不能处理多列。@christophervanhoecke您在帖子中没有提到数据没有排序/需要排序。此外,order绝对允许您按多个列进行排序。例如,使用df,orderx,y,-z将df先按x排序,然后按y排序,然后按z倒序。只需继续向order添加变量,它就会嵌套它们-例如,orderc1,2,2,c13,12,1。抬头,如果特定帧的行数少于20行,则会添加数据。建议使用类似于lappylist、functionx rbindheadx、10、tailx、min10、nrowx-10的方法