我有一个清单清单。这些列表的长度不同。
listXYZ <- list(c("x1", "x2", "x3"),
c("y1", "y2", "y3", "y4", "y5", "y6"),
c("z1"))
我想将列表转换为表格,以便使用knitr
在xtable
中进行打印,但是我想避免使用plyr
,因为我已经加载了dplyr并且不想两者中都可用的命令造成混乱(也不要在所有内容前面都写package::
)。没有这种限制,我会使用
plyr::ldply(listXYZ, rbind)
但是我见过的最简单的非plyr等效项是
do.call(rbind, listXYZ)
,它通过重复较短的列表直到达到最长列表的长度来替换空格。较短列表中的空白应填充NA,
其他方法由于列表长度不同而导致错误消息,例如:
In (function (..., deparse.level = 1) :
number of columns of result is not a multiple of vector length (arg 1)
是否有一种方法可以很好地进行扩展(对于较大的列表)?就我而言,列表将始终有5行,但是列表的长度差异很大。
答案 0 :(得分:1)
可以通过更新length属性来解决您遇到的问题。
class A{
public`enter code here`static void main (String args[]){
int array[]= {-5, -4, 0, 2, 10, 3, -3};
int min;
int second_min;
if(array[0]<array[1]){
min=array[0];
second_min=array[1];
}else{
min=array[1];
second_min=array[0];
}
for(int i=2;i<array.length;i++){
if(second_min > array[i] && min > array[i]){
second_min=min;
min=array[i];
}else if(second_min > array[i] && min < array[i]){
min=min;
second_min=array[i];
}
}
System.out.println(min);
System.out.println(second_min);
}
}
摘自文档:当向量延长时,将使用NA填充到其新长度。
答案 1 :(得分:0)
索引到向量的末尾会导致NA
,因此您可以使用它来填充NA:
max_len <- max(sapply(listXYZ,length))
do.call("rbind",lapply(listXYZ,function(x) x[seq(max_len)]))
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] "x1" "x2" "x3" NA NA NA
[2,] "y1" "y2" "y3" "y4" "y5" "y6"
[3,] "z1" NA NA NA NA NA