print方法对于数据帧表现得很奇怪

时间:2013-10-29 22:45:59

标签: r rstudio pander

当我尝试显示数据帧的内容时,我得到一些奇怪的输出(参见下面的屏幕截图)。我在这里使用head(),但对于任何数据帧显示,行为都是相同的。

Screenshot of RStudio

这种行为似乎只出现在RStudio中。如下所示,我的R基本安装表现如预期。

Screenshot of base R installation

我的sessionInfo如下:

> sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
_LC_COLLATE=English_United States.1252_, _LC_CTYPE=English_United States.1252_,     _LC_MONETARY=English_United States.1252_, _LC_NUMERIC=C_ and _LC_TIME=English_United     States.1252_
attached base packages:
_stats_, _graphics_, _grDevices_, _utils_, _datasets_, _methods_ and _base_
loaded via a namespace (and not attached):
_digest_0.6.3_, _pander_0.3.8_ and _tools_3.0.1_

有关正在发生的事情的任何想法?

更新

在回应Hong Ooi时,我正在显示以下getAnywhere("print.data.frame")[1:2]的结果。

$`package:base`
function (x, ..., digits = NULL, quote = FALSE, right = TRUE, 
    row.names = TRUE) 
{
    n <- length(row.names(x))
    if (length(x) == 0L) {
        cat(gettextf("data frame with 0 columns and %d rows\n", 
            n))
    }
    else if (n == 0L) {
        print.default(names(x), quote = FALSE)
        cat(gettext("<0 rows> (or 0-length row.names)\n"))
    }
    else {
        m <- as.matrix(format.data.frame(x, digits = digits, 
            na.encode = FALSE))
        if (!isTRUE(row.names)) 
            dimnames(m)[[1L]] <- if (identical(row.names, FALSE)) 
                rep.int("", n)
            else row.names
        print(m, ..., quote = quote, right = right)
    }
    invisible(x)
}
<bytecode: 0x0000000009f8e570>
<environment: namespace:base>

[[2]]
function (x, ..., digits = NULL, quote = FALSE, right = TRUE, 
    row.names = TRUE) 
{
    n <- length(row.names(x))
    if (length(x) == 0L) {
        cat(gettextf("data frame with 0 columns and %d rows\n", 
            n))
    }
    else if (n == 0L) {
        print.default(names(x), quote = FALSE)
        cat(gettext("<0 rows> (or 0-length row.names)\n"))
    }
    else {
        m <- as.matrix(format.data.frame(x, digits = digits, 
            na.encode = FALSE))
        if (!isTRUE(row.names)) 
            dimnames(m)[[1L]] <- if (identical(row.names, FALSE)) 
                rep.int("", n)
            else row.names
        print(m, ..., quote = quote, right = right)
    }
    invisible(x)
}
<bytecode: 0x0000000009f8e570>
<environment: namespace:base>

2 个答案:

答案 0 :(得分:1)

我不确定哪一个有效,我将RStudio从v0.97.551升级到v0.98.447并将R从3.0.1升级到3.0.2。其中一个升级似乎解决了我的问题,我的数据帧再次正常打印:)

答案 1 :(得分:0)

您在RScript窗口中。双星号和&nbsp是RMarkdown“标点符号”。 sessionInfo()细节对于理解RStudio的行为不会有用,因为它将准确描述您使用GUI执行的操作序列。