我有一个数据框列表,其中包含不相等的行数.我想在我的所有数据帧中生成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)
您可以使用这样做,[.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)
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |