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


R mode 对象的(存储)模式


R语言 mode 位于 base 包(package)。

说明

获取或设置‘mode’(‘type’的一种),或某个对象的存储模式R对象。

用法

mode(x)
mode(x) <- value
storage.mode(x)
storage.mode(x) <- value

参数

x

任何R对象。

value

给出对象所需模式或“存储模式”(类型)的字符串。

细节

modestorage.mode 都返回一个字符串,给出对象的(存储)模式(通常相同),两者都依赖于 typeof(x) 的输出,请参见下面的示例。

mode(x) <- "newmode" 将对象 xmode 更改为 newmode 。仅当存在适当的 as.newmode 函数时才支持此函数,例如 "logical" , "integer" , "double" , "complex" , "raw" , "character" , "list" , "expression" , "name" , "symbol""function" 。属性被保留(但见下文)。

storage.mode(x) <- "newmode"mode<- 的更高效的 primitive 版本,适用于内部类型之一的 "newmode"(请参阅 typeof ),但不适用于 "single" 。属性被保留。

作为存储方式"single"仅是pseudo-modeR,不会被报告mode或者storage.mode: 使用attr(object, "Csingle")来检查这一点。然而,mode<-可用于将模式设置为"single",它将实模式设置为"double""Csingle"归因于TRUE。设置任何其他模式都会删除此属性。

请注意(在下面的示例中)某些 call 具有与 S 兼容的模式 "("

模式名称

模式与类型具有相同的名称集(请参阅 typeof ),除了

  • 类型 "integer""double" 返回为 "numeric"

  • 类型 "special""builtin""closure" 返回为 "function"

  • 类型 "symbol" 称为模式 "name"

  • 类型 "language" 返回为 "(""call"

例子

require(stats)

sapply(options(), mode)

cex3 <- c("NULL", "1", "1:1", "1i", "list(1)", "data.frame(x = 1)",
  "pairlist(pi)", "c", "lm", "formals(lm)[[1]]",  "formals(lm)[[2]]",
  "y ~ x","expression((1))[[1]]", "(y ~ x)[[1]]",
  "expression(x <- pi)[[1]][[1]]")
lex3 <- sapply(cex3, function(x) eval(str2lang(x)))
mex3 <- t(sapply(lex3,
                 function(x) c(typeof(x), storage.mode(x), mode(x))))
dimnames(mex3) <- list(cex3, c("typeof(.)","storage.mode(.)","mode(.)"))
mex3

## This also makes a local copy of 'pi':
storage.mode(pi) <- "complex"
storage.mode(pi)
rm(pi)

参考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

typeof 表示 R-internal ‘mode’ 或 ‘type’、type.convertattributes

相关用法


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