gpt4 book ai didi

rbind() 返回奇数结果

转载 作者:行者123 更新时间:2023-12-04 05:00:46 26 4
gpt4 key购买 nike

这有所有迹象表明它是如此愚蠢,以至于我会后悔在公共(public)论坛上提出它,但我现在已经难倒了一些人,所以c'est la vie。

我正在运行以下代码块,但没有得到我期望的结果:

zz <- list(a=list('a', 'b', 'c', 'd'), b=list('f', 'g', '2', '1'),
c=list('t', 'w', 'x', '6'))
padMat <- do.call('cbind', zz)
headMat <- matrix(c(colnames(padMat), rep('foo', ncol(padMat))), nrow=2, byrow=TRUE)
rbind(headMat, padMat)

我曾预料到:
a    b    c
foo foo foo
a f t
b g w
c 2 x
d 1 6

相反,我得到:
a    b    c
a f t
b g w
c 2 x
d 1 6
NULL NULL NULL

看来它是按行填充 rbind 的上部,然后在最后添加一行 NULL 值。

几点注意事项:
  • 只要 headMat 是单行
  • 就可以正常工作
  • 仔细检查一下,我还删除了 padMat 的暗名,这并没有影响
  • 另一个想法是它与 byrow=TRUE 有某种关系,但如果你把它去掉
  • 就会发生同样的行为。

    最佳答案

    padMat是一个列表(带有 dim 属性),而不是您通常认为的矩阵。

    > padMat <- do.call('cbind', zz)
    > str(padMat)
    List of 12
    $ : chr "a"
    $ : chr "b"
    $ : chr "c"
    $ : chr "d"
    $ : chr "f"
    $ : chr "g"
    $ : chr "2"
    $ : chr "1"
    $ : chr "t"
    $ : chr "w"
    $ : chr "x"
    $ : chr "6"
    - attr(*, "dim")= int [1:2] 4 3
    - attr(*, "dimnames")=List of 2
    ..$ : NULL
    ..$ : chr [1:3] "a" "b" "c"

    我怀疑你想要类似的东西:
    > padMat <- do.call(cbind,lapply(zz,c,recursive=TRUE))
    > str(padMat)
    chr [1:4, 1:3] "a" "b" "c" "d" "f" "g" "2" "1" "t" "w" ...
    - attr(*, "dimnames")=List of 2
    ..$ : NULL
    ..$ : chr [1:3] "a" "b" "c"

    这里的教训是,“ str 是你的 friend 。” :)

    关于rbind() 返回奇数结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6416182/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com