Printing dataframes with long strings in R

前端 未结 3 1862
挽巷
挽巷 2021-02-20 00:13

Let\'s have a dataframe with long strings in one column:

 df<-data.frame(short=rnorm(10,0,1),long=replicate(10,paste(rep(sample(letters),runif(1,5,8)),collaps         


        
3条回答
  •  清酒与你
    2021-02-20 00:22

    You can redefine the print.data.frame method, and in this function use substr to trim your character vectors to the desired maximum length:

    print.data.frame <- function (x, ..., maxchar=20, digits = NULL, quote = FALSE,
        right = TRUE, row.names = TRUE) 
    {
      x <- as.data.frame(
          lapply(x, function(xx)
                if(is.character(xx)) substr(xx, 1, maxchar) else xx)
      )
      base::print.data.frame(x, ..., digits=digits, quote=quote, right=right, 
          row.names=row.names)
    }
    

    Create data. Note my addition of stringsAsFactors=FALSE:

    df <- data.frame(
        short=rnorm(10,0,1),
        long=replicate(10,paste(rep(sample(letters),runif(1,5,8)),collapse="")),
        stringsAsFactors=FALSE
    )
    

    Print data.frame:

    print(df, maxchar=10)
            short       long
    1  -0.6188273 cpfhnjmeiw
    2  -0.0570548 bwcmpinedr
    3  -0.5795637 dcevnyihlj
    4   0.1977156 qzxlhvnarm
    5  -1.9551196 aiflwtkjdq
    6  -1.2429173 vlscerwhgq
    7  -0.5897045 fziogkpsyr
    8   0.4946985 pdeswloxcn
    9   0.3262543 kxlofchszd
    10 -1.8059621 wncaedpzty
    

提交回复
热议问题