How can I print tibbles when chunk is run in R Not

2019-06-25 11:31发布

问题:

I cannot print a Tibble created by the CSV file below by running a chunk in an R Notebook in RStudio. The following example prints messages about parsing from read_csv but does not print df. However, when I preview the notebook, the data frame is printed. The data frame is also printed when entering the code using the R console.

---
title: "Min Example"
output: html_notebook
---

```{r chunk}
library(readr)
library(tibble)
df <- read_csv('min.csv')
df
```

The command head(df) also produces no output when the chunk is run, but summary(df) and str(df) do produce output in the notebook.

I am using the latest version of RStudio, 1.0.136, and my packages are up to date. My session info follows

R version 3.3.2 (2016-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.1 LTS

locale:
[1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8       
[4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
[7] LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] tibble_1.2  readr_1.0.0

loaded via a namespace (and not attached):
[1] assertthat_0.1 tools_3.3.2    Rcpp_0.12.8    knitr_1.15.1

The contents of the CSV file are

ID,Year,PubDate,CWE,CVSS,Vendor,Project
CVE-1999-0001,1999,1999-12-30,CWE-20,5.0,freebsd,freebsd
CVE-1999-0002,1998,1998-10-12,CWE-119,10.0,caldera,openlinux
CVE-1999-0003,1998,1998-04-01,NA,10.0,sgi,irix
CVE-1999-0004,1997,1997-12-16,NA,5.0,university_of_washington,pine
CVE-1999-0005,1998,1998-07-20,NA,10.0,university_of_washington,imap
CVE-1999-0006,1998,1998-07-14,NA,10.0,qualcomm,qpopper
CVE-1999-0007,1998,1998-06-26,NA,5.0,ssleay,ssleay
CVE-1999-0008,1998,1998-06-08,NA,10.0,sun,solaris
CVE-1999-0009,1998,1998-04-08,NA,10.0,sgi,irix

Viewing the data frame using dput() produces

structure(list(ID = c("CVE-1999-0001", "CVE-1999-0002", "CVE-1999-0003", 
"CVE-1999-0004", "CVE-1999-0005", "CVE-1999-0006", "CVE-1999-0007", 
"CVE-1999-0008", "CVE-1999-0009"), Year = c(1999L, 1998L, 1998L, 
1997L, 1998L, 1998L, 1998L, 1998L, 1998L), PubDate = structure(c(10955, 
10511, 10317, 10211, 10427, 10421, 10403, 10385, 10324), class = "Date"), 
    CWE = c("CWE-20", "CWE-119", NA, NA, NA, NA, NA, NA, NA), 
    CVSS = c(5, 10, 10, 5, 10, 10, 5, 10, 10), Vendor = c("freebsd", 
    "caldera", "sgi", "university_of_washington", "university_of_washington", 
    "qualcomm", "ssleay", "sun", "sgi"), Project = c("freebsd", 
    "openlinux", "irix", "pine", "imap", "qpopper", "ssleay", 
    "solaris", "irix")), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -9L), .Names = c("ID", "Year", "PubDate", 
"CWE", "CVSS", "Vendor", "Project"), spec = structure(list(cols = structure(list(
    ID = structure(list(), class = c("collector_character", "collector"
    )), Year = structure(list(), class = c("collector_integer", 
    "collector")), PubDate = structure(list(format = ""), .Names = "format", class = c("collector_date", 
    "collector")), CWE = structure(list(), class = c("collector_character", 
    "collector")), CVSS = structure(list(), class = c("collector_double", 
    "collector")), Vendor = structure(list(), class = c("collector_character", 
    "collector")), Project = structure(list(), class = c("collector_character", 
    "collector"))), .Names = c("ID", "Year", "PubDate", "CWE", 
"CVSS", "Vendor", "Project")), default = structure(list(), class = c("collector_guess", 
"collector"))), .Names = c("cols", "default"), class = "col_spec"))

The RStudio Diagnostics Report is now available.

回答1:

In other answer/question (here), Kevin Ushey said:

This is indeed a bug in the current release of RStudio: data.frames containing Date objects are not rendered properly in notebooks. You might try installing the latest daily build of RStudio and confirming the issue is resolved there: http://dailies.rstudio.com

Between upgrade or downgrade, one may temporarly print data.frame in code chunks by using print(as.matrix()):

```{r}
print(as.matrix(df), quote = FALSE)
```

To simulate head()'s behaviour:

```{r}
print(as.matrix(df), quote = FALSE, max = length(df) * 6)
```


回答2:

I might have faced a similar problem, and did solve it by installing the 1.1.89 Version available here.



标签: r rstudio