将零添加到 R 中前 x 行的列

Adding Zero to a column in first x rows in R

我正在创建一个用于预测目的的分类模型。我有几个 ext 文件,我将它们转换成一个包含多个列表(称为梳子)的大列表。然后我将大列表分解为一个单独的数据框,每个列表作为其自己的列(称为 BI)。因为每个列表可能包含不同数量的元素,所以更简单的参数 matrix(unlist(l), ncol=ncol) 不起作用。在审查备选方案时,我进行了修改以编译以下内容:

max_length <- max(sapply(comb,length))

BI<-sapply(comb, function(x){
c(x, rep(0, max_length - length(x)))
})

这将创建一个数据框,为每个列表分配一列,并为该列中的每个缺失元素分配一个零值。这些零显示在该列的末尾,但我希望它们位于该列的开头。这是当前输出的示例:

cola colb colc
2    2    2   
1    1    0
4    0    0

我需要你的帮助来转换我的原始代码以生成以下格式:

acola colb colc
2    0    0   
1    2    0
4    1    2

在串联中交换顺序可能就足够了 c:

max_length <- max(sapply(comb, length))

BI <- sapply(comb, function(x){
    c(rep(0, max_length - length(x)), x)
})

编辑:根据下面评论中的附加信息,这是一种以另一种方式修改代码的方法。这个想法是,只要你的第一种方法给出 你有一个合适的数据框,我们可以通过使用来规避这个问题 order-函数。

max_length <- max(sapply(comb,length))

BI <- sapply(comb, function(x){
    .zeros <- rep(0, max_length - length(x))
    .rearange <- order(c(1:length(x), .zeros))
    c(x, .zeros)[.rearange]
})

我已经测试过此代码适用于我的一个小测试示例 已创建,但我不确定此示例是否与您的相似 comb...

如果这个修改后的方法不管用,那还是有可能的 首先使用您的原始代码创建数据框,然后 然后一次重新排序一列。