当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R str 紧凑地显示任意 R 对象的结构


R语言 str 位于 utils 包(package)。

说明

紧凑地显示内部str的结构R对象,诊断函数和替代方案summary(并且在某种程度上,dput)。理想情况下,每个 ‘basic’ 结构仅显示一行。它特别适合紧凑地显示(可能是嵌套的)列表的(缩写)内容。这个想法是给出合理的输出任何 R目的。它调用args对于(非原始)函数对象。

strOptions() 是设置 options(str = .) 的便捷函数,请参阅示例。

用法

str(object, ...)

## S3 method for class 'data.frame'
str(object, ...)

## Default S3 method:
str(object, max.level = NA,
    vec.len  = strO$vec.len, digits.d = strO$digits.d,
    nchar.max = 128, give.attr = TRUE,
    drop.deparse.attr = strO$drop.deparse.attr,
    give.head = TRUE, give.length = give.head,
    width = getOption("width"), nest.lev = 0,
    indent.str = paste(rep.int(" ", max(0, nest.lev + 1)),
                       collapse = ".."),
    comp.str = "$ ", no.list = FALSE, envir = baseenv(),
    strict.width = strO$strict.width,
    formatNum = strO$formatNum, list.len = strO$list.len,
    deparse.lines = strO$deparse.lines, ...)

strOptions(strict.width = "no", digits.d = 3, vec.len = 4,
           list.len = 99, deparse.lines = NULL,
           drop.deparse.attr = TRUE,
           formatNum = function(x, ...)
                       format(x, trim = TRUE, drop0trailing = TRUE, ...))

参数

object

任何R您想要了解其一些信息的对象。

max.level

用于显示嵌套结构的最大嵌套级别,例如包含子列表的列表。默认 NA:显示所有嵌套级别。

vec.len

数字 (>= 0) 指示每个向量显示多少个“前几个”元素。根据向量的类型,该数字乘以不同的因子(从 0.5 到 3)。默认为选项 "str"vec.len 组件(请参阅 options ),默认为 4。

digits.d

数字组件的位数(如 print )。默认为选项 "str"digits.d 组件,默认为 3。

nchar.max

character 字符串显示的最大字符数。较长的字符串将被截断,请参阅下面的 longch 示例。

give.attr

逻辑性;如果TRUE(默认),则将属性显示为子结构。

drop.deparse.attr

逻辑性;如果 TRUE (默认),则 deparse(control = <S>)<S> 中不会有 "showAttributes" 。过去被硬编码为FALSE,因此可以通过strOptions()进行设置以实现向后兼容性。

give.length

逻辑性;如果 TRUE (默认),则指示长度(如 [1:...] )。

give.head

逻辑性;如果 TRUE (默认),请给出(可能缩写)模式/类和长度(如 <type>[1:...] )。

width

要使用的页面宽度。默认是当前活动的options("width");请注意,这只有很弱的效果,除非 strict.width 不是 "no"

nest.lev

str 的递归调用中的当前嵌套级别。

indent.str

要使用的缩进字符串。

comp.str

用于分隔列表组件的字符串。

no.list

逻辑性;如果为真,则不会打印“...列表”或类。

envir

仅用于 Promise(请参阅 delayedAssign )对象的环境。

strict.width

字符串,指示是否应严格遵循 width 参数的规范,值为 c("no", "cut", "wrap") 之一,可以缩写。默认为选项 "str"strict.width 组件(请参阅 options ),出于向后兼容性原因,默认为 "no""wrap" 使用 strwrap(*, width = width)"cut" 直接剪切到 width 。请注意,较小的 vec.length 可能比设置 strict.width = "wrap" 更好。

formatNum

一个函数,例如format用于格式化数字向量。它默认为formatNum期权的组成部分"str",请参阅“Usage”strOptions()上面,这几乎向后兼容R<= 2.7.x,但是,使用formatC可能会稍微好一些。

list.len

数字;在一个级别内显示的列表元素的最大数量。

deparse.lines

默认情况下为数字或 NULL ,当 objectcall 时,确定 deparse()nlines 参数。当 NULL 时,nchar.maxwidth 参数用于确定智能默认值。

...

潜在的进一步参数(由于方法/通用原因需要)。

出于效率原因,str 不会返回任何内容。明显的副作用是输出到终端。

注意

请参阅下面详细注释的“示例”。

默认方法尝试“work always”,但需要对objectclass但没有自己的str()方法的情况做出一些假设,这是典型的情况:它依赖于"[""[[" 子集方法与 length() 兼容。如果不是这种情况,或者当 is.list(object)TRUE ,但 length(object)length(unclass(object)) 不同时,它将其视为 “irregular” 并将 unclass(object) 的内容报告为 “hidden list”。

例子

require(stats); require(grDevices); require(graphics)
## The following examples show some of 'str' capabilities
str(1:12)
str(ls)
str(args) #- more useful than  args(args) !
str(freeny)
str(str)
str(.Machine, digits.d = 20) # extra digits for identification of binary numbers
str( lsfit(1:9, 1:9))
str( lsfit(1:9, 1:9), max.level = 1)
str( lsfit(1:9, 1:9), width = 60, strict.width = "cut")
str( lsfit(1:9, 1:9), width = 60, strict.width = "wrap")
op <- options(); str(op)   # save first;
                           # otherwise internal options() is used.
need.dev <-
  !exists(".Device") || is.null(.Device) || .Device == "null device"
{ if(need.dev) postscript()
  str(par())
  if(need.dev) graphics.off()
}
ch <- letters[1:12]; is.na(ch) <- 3:5
str(ch) # character NA's

str(list(a = "A", L = as.list(1:100)), list.len = 9)
##                                     ------------
## " .. [list output truncated] "

## Long strings,   'nchar.max'; 'strict.width' :
nchar(longch <- paste(rep(letters,100), collapse = ""))
str(longch)
str(longch, nchar.max = 52)
str(longch, strict.width = "wrap")

## Multibyte characters in strings:
## Truncation behavior (<-> correct width measurement) for "long" non-ASCII:
idx <- c(65313:65338, 65345:65350)
fwch <- intToUtf8(idx) # full width character string: each has width 2
ch <- strtrim(paste(LETTERS, collapse="._"), 64)
(ncc <- c(c.ch = nchar(ch),   w.ch = nchar(ch,   "w"),
          c.fw = nchar(fwch), w.fw = nchar(fwch, "w")))
stopifnot(unname(ncc) == c(64,64, 32, 64))
## nchar.max: 1st line needs an increase of  2  in order to see  1  (in UTF-8!):
invisible(lapply(60:66, function(N) str(fwch, nchar.max = N)))
invisible(lapply(60:66, function(N) str( ch , nchar.max = N))) # "1 is 1" here


## Settings for narrow transcript :
op <- options(width = 60,
              str = strOptions(strict.width = "wrap"))
str(lsfit(1:9,1:9))
str(options())
## reset to previous:
options(op)



str(quote( { A+B; list(C, D) } ))



## S4 classes :
require(stats4)
x <- 0:10; y <- c(26, 17, 13, 12, 20, 5, 9, 8, 5, 4, 8)
ll <- function(ymax = 15, xh = 6)
      -sum(dpois(y, lambda=ymax/(1+x/xh), log=TRUE))
fit <- mle(ll)
str(fit)

作者

Martin Maechler maechler@stat.math.ethz.ch since 1990.

也可以看看

ls.str 用于列出对象及其结构; summaryargs

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Compactly Display the Structure of an Arbitrary R Object。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。