2016-12-08 53 views
0

我有一個包含數據框的列表,每個列表都有不同數量的行。現在我想將行添加到列表的每個數據幀中,直到列表中的每個數據幀都有1000行。添加的行應全都只包含NAs。列表中的所有數據框都包含三列。將數據行從數據框列表中添加到數據框,直到列表中的每個數據框的行數爲1000爲止

我第一次定義的函數

adder <- function(x) {rbind(x, c(NA, NA, NA))} 

,然後使用lapply

dflisttest <- lapply(dflisttest, adder) 

然而,把它應用到列表的每個數據幀,這將添加一行到每一個數據幀,而不是隻對少於1000行的。我如何循環它,以便列表中的所有數據框自動填充1000行?

+1

您的問題是無法重現的。請提供一個MCVE。例如,每個data.frames具有相同的列數? – lmo

回答

0

如果這是你的數據框:

df <- data.frame(x=c(rep(1,8),rep(2,4)), 
       y=c(rep(0,8),rep(5,4)) 

,並要綁定值(NA),直到其nrow = 1000,你可以嘗試:

adder <- function(x) { 

     if(nrow(x)<1000) 
       x[(nrow(x)+1):1000,] <- NA 

     return(x) 
} 

此功能將NA中的所有列在最後一行至第#1000行之後

示例:在行12之後添加了NA,這是df的原始大小。

> df <- adder(df) 
> df[10:16,] 
    x y 
10 2 5 
11 2 5 
12 2 5 
13 NA NA 
14 NA NA 
15 NA NA 
16 NA NA 
+0

如果data.frame已經有1000行了?... prefer [return(x [1:1000,]' –

+0

Aha,thx。編輯函數首先檢查大小 – OmaymaS

+0

謝謝,現在使用lapply加法器函數成功了! – GNee

相關問題