gpt4 book ai didi

r - bit64 NA 不会在 data.frame 构造函数中复制

转载 作者:行者123 更新时间:2023-12-04 13:34:04 25 4
gpt4 key购买 nike

在构建数据框时,如果长度不同,列将被复制。

> data.frame(x = c(1,2), y = NA_integer_)
x y
1 1 NA
2 2 NA
但是,当我尝试使用 bit64::NA_integer64_ 执行此操作时,我收到一个错误。有谁知道会发生什么? rep()如果在 bit64::NA_integer64_ 上单独调用,则有效.
> data.frame(x = c(1,2), y = bit64::NA_integer64_)
Error in data.frame(x = c(1, 2), y = bit64::NA_integer64_) :
arguments imply differing number of rows: 2, 1
> rep(bit64::NA_integer64_, 2)
integer64
[1] <NA> <NA>

最佳答案

data.frame只会回收:

  • 除了 names 之外没有其他属性的向量
  • factor
  • AsIs character
  • Date
  • POSIXct
  • tibble没有这个问题。
    tibble::tibble(x = c(1,2), y = bit64::NA_integer64_)
    #> # A tibble: 2 x 2
    #> x y
    #> <dbl> <int64>
    #> 1 1 NA
    #> 2 2 NA
    这是来自 data.frame 的相关片段
    for (i in seq_len(n)[nrows < nr]) {
    xi <- vlist[[i]]
    if (nrows[i] > 0L && (nr%%nrows[i] == 0L)) {
    xi <- unclass(xi)
    fixed <- TRUE
    for (j in seq_along(xi)) {
    xi1 <- xi[[j]]
    if (is.vector(xi1) || is.factor(xi1))
    xi[[j]] <- rep(xi1, length.out = nr)
    else if (is.character(xi1) && inherits(xi1, "AsIs"))
    xi[[j]] <- structure(rep(xi1, length.out = nr),
    class = class(xi1))
    else if (inherits(xi1, "Date") || inherits(xi1, "POSIXct"))
    xi[[j]] <- rep(xi1, length.out = nr)
    else {
    fixed <- FALSE
    break
    }
    }
    if (fixed) {
    vlist[[i]] <- xi
    next
    }
    }
    stop(gettextf("arguments imply differing number of rows: %s",
    paste(unique(nrows), collapse = ", ")), domain = NA)
    }

    关于r - bit64 NA 不会在 data.frame 构造函数中复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63286549/

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