如何在具有不相等行的数据帧列表中生成NA

Chi*_*oli 1 r list

我有一个数据框列表,其中包含不相等的行数.我想在我的所有数据帧中生成NA,以便它们中的行数相等.

l=list(data.frame(a=1:5,b=4:8), data.frame(a=1:10,b=11:20))
m=max(sapply(l, nrow))
Run Code Online (Sandbox Code Playgroud)

这适用于长度但不适用于行.

lapply(l, function(x) { nrow(x) <- m  })
Run Code Online (Sandbox Code Playgroud)

tal*_*lat 5

您可以使用这样做,[.data.frame因为如果您提取的行数多于data.frame(或其他向量)中存在的行数,则NA默认情况下将填充它们.

lapply(l, function(x) x[seq_len(m),])
Run Code Online (Sandbox Code Playgroud)

或者如果您想在之后重置row.names:

lapply(l, function(x){ x <- x[seq_len(m),]; row.names(x) <- NULL; x})
Run Code Online (Sandbox Code Playgroud)

如上所述,简单向量也是如此:

x <- 1:5
x[1:10]
# [1]  1  2  3  4  5 NA NA NA NA NA
Run Code Online (Sandbox Code Playgroud)