2016-03-01 55 views
1

我有一些数据,像这样:截断data.frames在列表中的最短长度

df1 = (cbind(c(1,2,3),c(4,5,7))) 
df2= cbind(c(1,2,5,8,1,7),c(1,2,5,8,1,7)) 
myls=list(df1,df2) 

我正在寻找一种方式来斩DF2到D1的长度。这可以通过在df2结尾删除任何数字来完成。希望这个解决方案也可以在列表中使用2个以上的df。真实的数据集有1.4毫米点和一些不同数量的dfs(df1,df2,df3....df(n)。他们都将只有2列,但(y) and (x)

我的猜测是,sapply(myls,'[',1)将用于..

回答

2

我们也可以使用head

n <- min(vapply(myls, nrow, 0)) 
lapply(myls, head, n) 
+1

这似乎是更好的解决方案!很棒! –

1
n <- min(sapply(myls, nrow)) 
lapply(myls, function(x){x[1:n,]}) 
+0

一些关于这段代码实际上没有子集划分的数据,但在从矢量替换它1:N。 –

+1

它适用于你的例子;你有什么样的例子没有? –

+0

当我在我的例子中运行它时,我最终得到了4列的数据框,而不是像我开始的那样。 –