package ‘base’nakama/rjp/base-manual.pdf.devices...

622
Package ‘base’ September 14, 2016 Version 3.3.1 Priority base Title The R Base Package Author R Core Team and contributors worldwide Maintainer R Core Team <[email protected]> Description Base R functions. License Part of R 3.3.1 Suggests methods R topics documented: base-package ........................................ 1 .bincode ........................................... 2 .Device ........................................... 3 .Machine .......................................... 3 .Platform .......................................... 5 abbreviate .......................................... 7 agrep ............................................ 8 all .............................................. 10 all.equal ........................................... 11 all.names .......................................... 14 any .............................................. 15 aperm ............................................ 16 append ............................................ 17 apply ............................................ 18 args ............................................. 19 Arithmetic .......................................... 20 array ............................................. 23 as.data.frame ........................................ 25 as.Date ........................................... 26 as.environment ....................................... 29 as.function .......................................... 30 as.POSIX* ......................................... 31 AsIs ............................................. 33 assign ............................................ 34 assignOps .......................................... 36 attach ............................................ 37 1

Upload: others

Post on 05-Mar-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Package ‘base’September 14, 2016

Version 3.3.1

Priority base

Title The R Base Package

Author R Core Team and contributors worldwide

Maintainer R Core Team <[email protected]>

Description Base R functions.

License Part of R 3.3.1

Suggests methods

R topics documented:base-package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.bincode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5abbreviate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7agrep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10all.equal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11all.names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14any . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15aperm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16append . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17apply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18args . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23as.data.frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25as.Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26as.environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29as.function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30as.POSIX* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31AsIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33assign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34assignOps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36attach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

1

Page 2: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

2 R topics documented:

attr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40autoload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42backsolve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43basename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Bessel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45bindenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47bitwise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49body . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50bquote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52browserText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58callCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59CallExternal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63cbind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65char.expand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68charmatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70chartr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71chkDots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73chol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74chol2inv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77col . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78Colon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79colSums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80commandArgs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82comment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87conflicts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101contributors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104crossprod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104Cstack_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105cumsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106curlGetHeaders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107cut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108cut.POSIXt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110data.class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111data.frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112data.matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

Page 3: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

R topics documented: 3

date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116Dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117DateTimeClasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118dcf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Defunct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124delayedAssign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125deparse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126deparseOpts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128Deprecated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129det . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130detach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131diag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133diff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134difftime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136dim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138dimnames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139do.call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140dontCheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142double . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142dput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144drop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146droplevels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148duplicated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149dyn.load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152eapply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155eigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156encodeString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161EnvVar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163eval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165exists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168expand.grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171Extract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172Extract.data.frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Extract.factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180Extremes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181extSoftVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184file.access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188file.choose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189file.info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189file.path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191file.show . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193files2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196find.package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197findInterval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198force . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

Page 4: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

4 R topics documented:

forceAndCall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Foreign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201formals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205format.info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208format.pval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209formatC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210formatDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215funprog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216gc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218gc.time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219gctorture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221getDLLRegisteredRoutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223getLoadedDLLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225getNativeSymbolInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226gettext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228getwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229gl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231grepRaw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236groupGeneric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238grouping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240gzcon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241hexmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243Hyperbolic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244iconv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245icuSetCollate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248identical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250identity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252ifelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253integer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256interactive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257Internal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258InternalMethods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258invisible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259is.finite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259is.function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261is.language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262is.object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263is.R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263is.recursive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264is.single . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265is.unsorted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266ISOdatetime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266isS4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267isSymmetric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268jitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269kappa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270kronecker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

Page 5: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

R topics documented: 5

l10n_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274lapply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274Last.value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277La_version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278lengths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281libcurlVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282libcurlVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283libPaths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286library.dynam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289license . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291list.files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293list2env . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301logical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303LongVectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304lower.tri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305ls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306make.names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307make.unique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308mapply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309margin.table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310mat.or.vec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311match . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312match.arg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313match.call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315match.fun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316MathFun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317matmult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319maxCol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321mean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322memCompress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325Memory-limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326memory.profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330missing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332NA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337nargs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339nchar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

Page 6: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

6 R topics documented:

nlevels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342noquote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343norm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344normalizePath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345NotYet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346nrow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347ns-dblcolon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348ns-hooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349ns-load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350ns-topenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352NULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353numeric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354NumericConstants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356numeric_version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357octmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359on.exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360Ops.Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371outer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374Paren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375parse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376paste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378path.expand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380pcre_config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381pmatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381polyroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382pos.to.env . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383pretty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384Primitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386print.data.frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388print.default . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389prmatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391proc.time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392prod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393prop.table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394pushBack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395qr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396QR.Auxiliaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399quit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400Quotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402R.Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403Random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405Random.user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410rank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412rapply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413raw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414rawConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415rawConversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417RdUtils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418

Page 7: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

R topics documented: 7

readBin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419readChar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422readline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424readLines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425readRDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426readRenviron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428Recall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429reg.finalizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430regex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431regmatches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435remove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436rep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438replace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440Reserved . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441rev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441Rhome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442rle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443Round . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444round.POSIXt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445row . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446row+colnames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447row.names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449rowsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451save . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456scan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461seek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462seq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464seq.Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466seq.POSIXt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468serialize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471setTimeLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472shell.exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474showConnections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475shQuote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476sign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478sink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479slice.index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481slotOp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481socketSelect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482solve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487Special . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492sprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494

Page 8: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

8 R topics documented:

sQuote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498srcfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499startsWith . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502Startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506stopifnot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508strptime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509strrep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514strsplit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515strtoi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517strtrim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519strwrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520subset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521substitute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522substr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527svd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528sweep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533Sys.getenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534Sys.getpid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535Sys.glob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536Sys.info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537Sys.localeconv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539sys.parent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540Sys.readlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542Sys.setenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543Sys.setFileTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544Sys.sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545sys.source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546Sys.time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547Sys.which . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549system.file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551system.time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553system2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556tabulate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559tapply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560taskCallback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561taskCallbackManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563taskCallbackNames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565tempfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566textConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567tilde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569timezones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570toString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573

Page 9: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

base-package 9

traceback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578tracemem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581Trig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582trimws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583try . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584typeof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585unique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586unlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588unlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589unname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590UseMethod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591userhooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594utf8Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596validUTF8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598Vectorize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602weekdays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603which . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605which.min . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606with . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608withVisible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610writeLines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611xtfrm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612zapsmall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613zpackages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613zutils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614

base-package The R Base Package

Description

基本 R関数

Details

このパッケージは Rを言語として機能させる基本関数を含む:算術,入出力,基本的プログラミングのサポート等.その内容は継承によりすべての環境から利用できる.

関数の完全なリストについては library(help = "base")を使用する.

Page 10: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

10 .bincode

.bincode Bin a Numeric Vector

Description

数値ベクトルを仕分けし,結果に対する整数コードを返す.

Usage

.bincode(x, breaks, right = TRUE, include.lowest = FALSE)

Arguments

x 仕分けにより整数コードに変換される数値ベクトル.

breaks 二つもしくはそれ以上の区切り点の数値ベクトルで,昇順にソートされる.

right 論理値で,区間は右端で閉じているか (そして左端で開いているか)またはその逆か.

include.lowest 論理値で,最小 (もしくは right = FALSE に対しては最大)の ‘分割点’に等しい ‘x[i]’は最初(もしくは最後)のビンに入るべきか.

Details

これは cut.default(labels = FALSE)の要点版で,渡された引数をチェックする他の関数中で使われることを意図している. (それらは引数の異なった順序を共有することを注意する.)

cutとは異なり,breaksはユニークである必要はない.一つの入力はその両端が閉じている場合だけ長さゼロの区間に入ることができ,従って include.lowest = TRUEで,それは最初 (または right = FALSEに対しては最後)の区間になる.

Value

各要素がどのビンに入ったかを指示する xと同じ長さの整数ベクトル(最左端のビンはビン番号 1). xの NaNと NA要素は breaksの範囲外の値であるとして NAコードにマップされる.

See Also

cut, tabulate

Examples

## ユニークでない分点の例:x <- c(0, 0.01, 0.5, 0.99, 1)b <- c(0, 0, 1, 1).bincode(x, b, TRUE).bincode(x, b, FALSE).bincode(x, b, TRUE, TRUE).bincode(x, b, FALSE, TRUE)

Page 11: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

.Device 11

.Device Lists of Open/Active Graphics Devices

Description

開かれたグラフィックスデバイスの名前の対リストは .Devices中に保管されている.アクティブなデバイスの名前 (dev.curを見よ)は .Device中に保管されている.両者はシンボルで従って基本名前空間中に登場する.

Value

.Deviceは長さ1の文字列ベクトル.

.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に "null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項がある.もしデバイスが取り除かれるとその事項はデバイス番号が再利用されるまで ""になる.

デバイスは文字列ベクトルに属性を加えるかもしれない:例えばファイルに書き出すデバイスはそのパスを属性 "filepath"中に記録する.

.Machine Numerical Characteristics of the Machine

Description

.Machineは Rが稼働している機械の最大倍精度値や整数そして機械精度等の数値的特性に関する情報を保持する変数である.

Usage

.Machine

Details

アルゴリズムは Cody (1988)のサブルーチンMACHARに基づく.Rの現在の実装は全て32ビット整数と IEC 60559浮動小数点(倍精度)算術を使うので,最後の四つの値のうちの三つ以外の全てはほとんどすべての Rビルドで同じになる.

ほとんどのプラットフォームでは .Machine$double.xminより小さな値が起こり得ることを注意しよう.典型的な Rプラットフォームでは最少の正の倍精度値は約 5e-324である.

Value

以下の成分を持つリスト

double.eps 1 + x != 1となる最少の正の浮動小数点数.もし double.baseが 2かdouble.roundingが 0なら double.base ^ ulp.digitsに等しい;さもなければそれは (double.base ^ double.ulp.digits) / 2.普通2.220446e-16.

Page 12: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

12 .Machine

double.neg.eps 1 - x != 1となる小さい正の浮動小数点数.もし double.baseが 2かdouble.roundingが 0なら double.base ^ double.neg.ulp.digitsに等しい;さもなければそれは(double.base ^ double.neg.ulp.digits) / 2.普通 1.110223e-16.double.neg.ulp.digitsは下から -(double.digits + 3)で抑えられるので double.neg.epsは 1から引くと 1では無くなる最少の数ではないかもしれない.

double.xmin 最少のゼロでない正規化浮動小数点数,基数の巾乗,つまりdouble.base ^ double.min.exp.普通 2.225074e-308.

double.xmax 最大の正規化浮動小数点数.典型的には(1 - double.neg.eps) * double.base ^ double.max.expに等しいが,ある種の機械ではそれは二番目か三番目に大きなそうした数で,仮数部の最後の桁で 1または 2単位だけ小さすぎる.普通 1.797693e+308.より大きな非正規化数が起こり得ることを注意しよう.

double.base 浮動小数点表現の基数:普通 2.

double.digits 浮動小数点数の仮数の基本数:普通 53.

double.rounding

丸め動作,以下の一つ0浮動小数点加算が切り捨てをする;1浮動小数点加算が丸められ IEEE式でない;2浮動小数点加算が IEEE式丸め;3浮動小数点加算が切り捨て,部分的桁落ち;4浮動小数点加算が丸められ IEEE式でなく,部分的な桁落ち;5浮動小数点加算が IEEE式丸め,部分的桁落ち.普通 5.

double.guard 切り捨て算術を持つ乗算に対するガードビット数.これは浮動小数点算術が切り捨てを行えば 1で,基数 double.baseでの double digits桁数が乗算中の浮動小数点仮数の事後正規化シフトに使われる.さもなければ 0である.普通 0.

double.ulp.digits

1 + double.base ^ i != 1 である最大の負の整数 i であるが下から-(double.digits + 3)で抑えられている.普通 -52.

double.neg.ulp.digits

1 - double.base ^ i != 1 である最大の負の整数 i であるが下から-(double.digits + 3)で抑えられている.普通 -53.

double.exponent

浮動小数点数の指数の表現(バイアス又は符号を含む)に確保されるビット数 (double.baseが 10ならば桁数).普通 11.

double.min.exp double.base ^ iが正で正規化されている絶対値で最大の負の整数 i.普通 -1022.

double.max.exp 桁溢れする最少の double.baseの正の巾乗.普通 1024.

integer.max 表現可能な最大整数.常に 231− 1 = 2147483647.

sizeof.long Cの long型のバイト数: 4又は 8 (殆どの 64ビットシステム,しかしWindowsは異なる).

sizeof.longlong

Cの long long型のバイト数.そうした型がなければゼロで,さもなければ普通 8.

Page 13: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

.Platform 13

sizeof.longdouble

Cの long double型中のバイト数.そうした型がなければゼロ(もしくは Rの構築時にその使用が無効化されている).さもなければ恐らく 12(殆どの 32ビットビルド)または 16 (殆どの 64ビットビルド).

sizeof.pointer Cの SEXP型のバイト数. 32ビットビルドでは 4で 64ビットビルドでは 8.

Note

sizeof.longdouble は long double に対して確保される記憶メモリ量を告げるだけであることを注意しよう(これは普通 R によって例えば sum 中の加算器に対して使われ,readBinで読み取ることができる).しばしば保管されるのは IEC 60559の 80ビット拡張倍精度型であり,プラットフォームで使われる倍精度型に揃えるため詰め物がされる—これは ix86と x86_64チップを使う普通の Rプラットフォームに該当するようである.

Source

参考文献中の Fortranコードの Cへの移植を使う.最近のコンパイラでの過剰な最適化を抑えるため R Core Teamにより修正されている.

References

Cody, W. J. (1988) MACHAR: A subroutine to dynamically determine machine parameters. Trans-actions on Mathematical Software, 14, 4, 303–311.

See Also

プラットフォームに関する詳細は .Platform.

Examples

.Machine## 綺麗なプリント用にはnoquote(unlist(format(.Machine)))

.Platform Platform Specific Variables

Description

.Platform は R が構築されたプラットフォームの幾つかの詳細のリストである.これはOSが異なっても動作する Rコードを書く手段を提供する.

Usage

.Platform

Page 14: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

14 .Platform

Value

少なくとも以下の成分を持つリスト:

OS.type 文字列で計算機のOS(ファミリ)を与える. "unix" か "windows" の一つ.

file.sep 文字列で,プラットフォームで使用するファイル分離記号を与える:ユニックス風システムとWindowsでは "/" (しかし Classic Mac OS の以前の移植ではそうではなかった).

dynlib.ext 文字列で,動的に読み込めるライブラリのファイル名拡張子を与える.例えば,Windowsでは ".dll"でユニックス風OSでは ".sl". (OS Xユーザへの注意:これらは dyn.load で読み込まれる共有オブジェクトで,dynlibではない:dyn.loadを見よ.)

GUI 文字列で,使用される GUIのタイプを与える.GUIが仮定できない場合は "unknown".ユニックス風システムでの可能な値はオプション ‘-g’のコマンドラインフラグで与えられる値("X11", "Tk"), "AQUA" (OS XのR.app 下で稼働の場合), "Rgui" と "RTerm" (Windows),そして別のフロントエンドや埋め込み Rでは恐らく別のもの.

endian 文字列 "big"か "little"で,使用中のプロセッサの ‘エンディアン’を与える.これはバイトの読み書きの順序を知るために必要になる.例えばコネクションから/への整数や倍精度実数. readBinを見よ.

pkgType 文字列で options("pkgType") の好ましい設定を与える.値 "source","mac.binary", "mac.binary.mavericks" そして "win.binary" が現在使われている.

これは OSの特定に使ってはならない.

path.sep 文字列でプラットフォームで使われるパスの分離器号を与える.例えば,ユニックス風システムでは ":" で Windows では ";".PATH やTEXINPUTSといった環境変数中でパスを分離するのに使われる.

r_arch 文字列で,""の可能性もある.Rの構築で使われたアーキテクチャ固有のディレクトリ.

AQUA

OS X GUIの R.appの下では .Platform$GUIは "AQUA"に設定される.これは幾つかの結論を持つ:

• ‘/usr/local/bin’は PATH環境変数に追加される.

• 既定のグラフィックスデバイスは quartzに設定される.

• menuと select.listの graphics = TRUEオプションに対してネイティブの(Tkではなく)ウィジェットを選択する.

• HTMLヘルプは内部ブラウザに表示される.

• 表計算ソフト風のデータエディタ/ビューアは X11では無く Quartz版を使う.

See Also

R.versionと Sys.infoは OSに関するより詳細を与える.特に,R.version$platformはRがコンパイルされたプラットフォームの標準的名称を与える.

使用される算術の詳細については .Machineを見よ.プラットフォーム固有のシステム命令の起動には system.

Page 15: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

abbreviate 15

Examples

## 注意:これは dir.exists() によりシステムに依存しない仕方で行えるif(.Platform$OS.type == "unix") {

system.test <- function(...) system(paste("test", ...)) == 0Ldir.exists2 <- function(dir)

sapply(dir, function(d) system.test("-d", d))dir.exists2(c(R.home(), "/tmp", "~", "/NO")) # > T T T F

}

abbreviate Abbreviate Strings

Description

文字列を少なくとも minlength文字に短縮する. strict = TRUEで無い限り,元が重複しなければ結果は重複しない.

Usage

abbreviate(names.arg, minlength = 4, use.classes = TRUE,dot = FALSE, strict = FALSE,method = c("left.kept", "both.sides"))

Arguments

names.arg 省略されるべき名前の文字列ベクトル.もしくは as.characterによって文字列に変換されるオブジェクト.

minlength 省略の最小長さ.

use.classes 論理値(現在 Rは無視する).

dot 論理値:ドット(".")を加えるか?

strict 論理値:minlengthは順守すべきか?設定 strict = TRUEは重複する文字列を返す可能性があることを注意.

method 既定の "left.kept"と共に使われるメソッドを指定する文字列.以下の詳細を見よ.部分的マッチングが許される.

Details

使用される既定のアルゴリズム (method = "left.kept") は S のそれに類似する.単一の文字列に対してはこれは以下のように動作する.最初に文字列の先頭にあるすべての空白が取り除かれる.それから (もし必要なら)他の空白が取り除かれる.次に,(右から始めて)小文字の子音が続く小文字の母音が除かれる.最後にもし省略が依然としてminlengthより長ければ大文字が取り除かれる.

文字は常に単語の末尾から最初に取り除かれる.もし names.arg の要素が二つ以上の単語(単語は空白で分離されている)を含めば少なくとも各単語から一つの文字が残される.

欠損値 (NA)は変更されない.

もし use.classesが FALSEなら唯一の違いは文字と空白の間にある.これは実装されていない.

Page 16: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

16 agrep

Value

最初の引数中の文字列に対する省略形を含んだ文字列ベクトル.オリジナルの names.arg中の重複は同じ省略形を与える.もし重複していない要素が同じ長さ minlengthの省略形を持ち, method = "both.sides"ならば,基本の内部的な abbreviate()アルゴリズムが文字別に逆転された文字列に適用される;もしそれらが依然として重複した省略形を持ち,既定である strict = FALSEならば, minlengthは1だけ増やされ,新しい省略形がこれらの要素だけに適用される.この手順が names.arg中の重複しない要素がユニークな省略形を持つまで繰り返される.

names.argの文字版が返り値に名前引数として付加される.他の属性は保たれない.

警告

これは実際は英語だけにふさわしく,多バイトロケールの非アスキー文字ではうまく行かない.非アスキー文字と共に使われると警告が出る (そして長さを減らすように求められる).

See Also

substr.

Examples

x <- c("abcd", "efgh", "abce")abbreviate(x, 2)abbreviate(x, 2, strict = TRUE) # >> 最初と3番目は == "ab"

(st.abb <- abbreviate(state.name, 2))table(nchar(st.abb)) # 50のうち,3つは4文字必要 :as <- abbreviate(state.name, 3, strict = TRUE)as[which(as == "Mss")]

## method="both.sides" が役に立つ: 4文字はなく,3文字は4つだけ:st.ab2 <- abbreviate(state.name, 2, method = "both")table(nchar(st.ab2))## 二つの方法を比べる:cbind(st.abb, st.ab2)

agrep Approximate String Matching (Fuzzy Matching)

Description

pattern (第一引数)に近似的にマッチする物を x (第二引数)の各要素中から探す.一般化Levenshtein編集距離 (一つの文字列を他に変換するのに必要な挿入,除去,そして代入の重み付き回数の最小値)を使う.

Usage

agrep(pattern, x, max.distance = 0.1, costs = NULL,ignore.case = FALSE, value = FALSE, fixed = TRUE,useBytes = FALSE)

Page 17: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

agrep 17

agrepl(pattern, x, max.distance = 0.1, costs = NULL,ignore.case = FALSE, fixed = TRUE, useBytes = FALSE)

Arguments

pattern (fixed = FALSEに対して)マッチされるべき空でない文字列もしくは正規表現を含む文字列.

もし可能なら as.characterにより文字列に変換される.

x マッチが探される文字列ベクトル.もし可能なら as.characterにより文字列に変換される.

max.distance マッチに許される最大距離.整数か, patternの長さの最大変換コスト倍の分数(対応分数を下回らない最小整数で置き換えられる),もしくは可能な以下の成分を持つリスト

cost: 最大回数/マッチコストの分数(一般化 Levenshtein距離)all: 最大回数/全ての変換(挿入,削除そして代入)の分数insertions: 最大回数/挿入の分数deletions: 最大回数/削除の分数substitutions: 最大回数/代入の分数もし costが与えられないと,allの既定値は 10%であり,他の変換数は既定で allを超えない.成分名は省略できる.

costs ‘insertions’, ‘deletions’ そして ‘substitutions’ に部分的にマッチする名前を持つ数値ベクトルかリストで,一般化 Levenshtein距離を計算する際の対応コストを与える.もしくは NULL (既定)で三種類の変換に同じ単位コストを与えることを意味する.可能ならば as.integerを使い整数に変換される.

ignore.case もし FALSEならばパターンマッチングは大・小文字を区別する.もしTRUEならばマッチングの間区別しない.

value もし FALSEなら,決定されたマッチの添字(整数)を含むベクトルが返され,またもし TRUEならばマッチした要素自体が返される.

fixed 論理値.もし TRUE (既定値)ならばパターンは(そのまま)逐語的にマッチされる.さもなければ,それは正規表現としてマッチされる.

useBytes 論理値.多バイトロケールで比較は文字毎に行うか(既定値)バイト毎に行うか.

Details

Levenshtein 編集距離は近さの目安として使われる:これは一つの文字列を他に変換する際に必要とされた挿入,削除そして代入の総回数 (もしかするとコストで重みをつけた)である.

これは Ville Laurikari (http://laurikari.net/tre/)の treを使い,MBCS文字マッチングをサポートする.

useBytes の主要効果は不正な入力やうわべだけのマッチに関するエラーや警告を避けることである.これはマークされたエンコーディングによる入力の変換を禁止し,もし"bytes"とマークされた入力が見つかれば強制される ( Encodingを見よ).

Value

agrepはマッチした要素の添字を与えるベクトル.もしくは,もし valueが TRUEならば,マッチした要素(強制返還後で,名前以外の属性を保存しない).

agreplは論理値ベクトルを返す.

Page 18: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

18 all

Note

解説を不注意に読んだ者からそれに対するバグレポートがあるが,これは xの各要素の部分文字列にマッチする(丁度 grepがそうするように)のであって,要素全体にマッチするのでは無いことを注意しよう.パッケージ utils中の adistを参照せよ.これはオプションでマッチした部分文字列のオフセットを返す.

Author(s)

R < 2.10.0 のオリジナルバージョンは David Meyer による.現在のバージョンは BrianRipleyと Kurt Hornikによる.

See Also

grep, adist.

Examples

agrep("lasy", "1 lazy 2")agrep("lasy", c(" 1 lazy 2", "1 lasy 2"), max = list(sub = 0))agrep("laysy", c("1 lazy", "1", "1 LAZY"), max = 2)agrep("laysy", c("1 lazy", "1", "1 LAZY"), max = 2, value = TRUE)agrep("laysy", c("1 lazy", "1", "1 LAZY"), max = 2, ignore.case = TRUE)

all Are All Values True?

Description

すべての値が真かどうかを示す論理値ベクトルのセットを返す.

Usage

all(..., na.rm = FALSE)

Arguments

... ゼロ以上の論理値ベクトル.長さゼロの他のオブジェクトは無視される.そして残りはすべてのクラスを無視して論理値に強制変換される.

na.rm 論理値.もし真なら値 NAは結果が計算される前に取り除かれる.

Details

これは総称的関数である:それに対するメソッドを直接または Summaryグループ総称経由で書くことが出来る.これが適切に動作するためには,引数 ... は名前無しで,選択適用は最初の引数についてである必要がある.

整数以外の型 (バイト,倍精度実数,複素数値,文字列,リスト)への変換はしばしば想定外であるので警告が出る.

これはプリミティブな関数である.

Page 19: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

all.equal 19

Value

値は長さ1の論理値ベクトルである.

x を(強制変換後の) ... 中のすべての論理値ベクトルを結合したものとする.もしna.rm = TRUEならば NAは除かれる.

返される値は,もし x 中のすべての値が TRUE (値が一切無い場合を含む) ならば TRUEで,もし一つでも FLASE ならば FALSE となる.さもなければ値は NA である (これはna.rm = FALSEで ... が FALSE値を全く含まず,そして少なくともひとつ NA値を含む時だけ起こる).

S4メソッド

これは S4 Summaryグループ総称的関数の一部分である.それに対するメソッドはシグネチャ x, ..., na.rmを使うべきである.

Note

all(logical(0))が真であることは便利な規約である: xが長さゼロであっても

all(all(x), all(y)) == all(x, y)

が成り立つ.

References

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

See Also

anyは allを補う.そして stopifnot(*)は all(*)が成り立たない時の保険である.

Examples

range(x <- sort(round(stats::rnorm(10) - 1.2, 1)))if(all(x < 0)) cat("all x values are negative\n")

all(logical(0)) # 真,要素のすべてのゼロが真なので.

all.equal Test if Two Objects are (Nearly) Equal

Description

all.equal(x, y)は Rオブジェクト xと yが ‘ほぼ等しいか’をテストし比較するユーティリティである.もしそれらが等しくなければ比較は更にある程度行われ,差異の報告がされる. all.equalを if節で使わないこと—もし適当なら isTRUE(all.equal(....))か identicalを使う.

Page 20: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

20 all.equal

Usage

all.equal(target, current, ...)

## S3 method for class 'numeric'all.equal(target, current,

tolerance = sqrt(.Machine$double.eps), scale = NULL,..., check.attributes = TRUE)

## S3 method for class 'list'all.equal(target, current, ...,

check.attributes = TRUE, use.names = TRUE)

## S3 method for class 'environment'all.equal(target, current, all.names=TRUE, ...)

## S3 method for class 'POSIXt'all.equal(target, current, ..., tolerance = 1e-3, scale)

attr.all.equal(target, current, ...,check.attributes = TRUE, check.names = TRUE)

Arguments

target Rオブジェクト.

current 他の Rオブジェクトで targetと比較される.

... 異なったメソッドに対する追加引数.特に数値比較に対する次の二つ:

tolerance 数値 ≥ 0. tolerance以下の差異は報告されない.既定値は 1.5e-8に近い.

scale 数値スカラr > 0 (もしくは NULL). ‘詳細’を見よ.check.attributes

targetと currentの属性 (名前以外の)を比較すべきかどうかを指示する論理値.

use.names logical indicating if list comparison listの比較で異なった成分を整数添字ではなく名前で報告するかどうかを指示する論理値.これは ... の後に来るためその名前を完全に指定する必要があることを注意する.

all.names “隠し”オブジェクトが環境中でも比較されるべきかどうかを指示するlsに引き渡される論理値.

check.names target と current の names(.) を比較すべきかどうかを指示する論理値.

Details

all.equalは総称的関数で, target引数に関してメソッドを選択適用する.利用可能なメソッドについては methods("all.equal")を使うが,既定のメソッドもある種の選択適用を行う.例えばバイト型のターゲットに対しては rawメソッドを使う.

... に続く引数は(未省略の)名前で指定しなければならないことを思い出そう.それらの幾つかは R 3.1.0以前では ... の前にあった. ... 中に名前無しの引数を渡すことは,異なったメソッドで異なった引数にマッチするので,勧められない.

Page 21: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

all.equal 21

scale = NULL (既定)に対する数値比較は,ゼロに近くなければ,典型的に相対差スケールで行われる.最初に二つの数値ベクトルの平均絶対誤差が計算される.もしこれがtoleranceより小さいか有限でなければ絶対誤差が使われる.さもなければ target値による相対誤差スケールが使われる. (これらの比較は targetが NAでなく currentと異なる時だけ計算されることを注意する.)

もし scaleが正なら,絶対比較は scaleによるスケーリング(除算)の後で行われる.

複素数値の targetに対しては差のモジュラス (Mod)が使われる:all.equal.numericが呼び出されるので引数 toleranceと scaleが利用できる.

listメソッドは targetと currentの成分を再帰的に比較する.双方が“リスト風”である限りすべての他の引数が引き渡される.つまり is.vectorか is.listが実行される.

environmentメソッドは listメソッド経由で実行され,また参照クラスに対しても使われる(特定の all.equalメソッドが定義されていない限り).

date-timeクラスに対するメソッドは既定で tolerance = 0.001秒の許容度を許し,scaleを無視する.

attr.all.equalは属性の比較に対して用いられ, NULLか characterベクトルを返す.

Value

TRUE (attr.all.equal に対しては NULL) か mode "character" のベクトルで, target とcurrent間の違いを説明する.

References

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer (=に関して).

See Also

正確な一致性のテストには identical, isTRUE, ==,そして all.

Examples

all.equal(pi, 355/113)# 十分正確ではない(既定の許容度) > 相対誤差

d45 <- pi*(1/4 + 1:10)stopifnot(all.equal(tan(d45), rep(1, 10))) # TRUE, しかしall (tan(d45) == rep(1, 10)) # FALSE, 正確に一致しないからall.equal(tan(d45), rep(1, 10), tolerance = 0) # 違いを見るには

## 上級: 環境の同等性ae <- all.equal(as.environment("package:stats"),

asNamespace("stats"))stopifnot(is.character(ae), length(ae) > 10,

## R <= 3.1.1 では不正確に "等しいと見做される" とされたall.equal(asNamespace("stats"), asNamespace("stats")))

Page 22: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

22 all.names

all.names Find All Names in an Expression

Description

一つの表現式や呼び出し中に含まれるすべての名前をふくむ文字列ベクトルを返す.

Usage

all.names(expr, functions = TRUE, max.names = -1L, unique = FALSE)

all.vars(expr, functions = FALSE, max.names = -1L, unique = TRUE)

Arguments

expr 名前をそれから抜き出す表現式もしくは呼び出し.

functions 関数名を結果に含めるかどうかを指示する論理値.

max.names 返される名前の最大数.-1 なら無制限(ベクトルサイズの限界を除けば).

unique 重複した名前を結果から除くかどうかを指示する論理値.

Details

これらの関数はその引数の既定値をだけが異なる.

Value

抜き出された名前のベクトル.

See Also

表現式中のシンボルを値で置き換えるには substitute.

Examples

all.names(expression(sin(x+y)))all.names(quote(sin(x+y))) # または呼び出しall.vars(expression(sin(x+y)))

Page 23: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

any 23

any Are Some Values True?

Description

論理値ベクトルのセットをあたえた時,値の少なくとも一つが真か?

Usage

any(..., na.rm = FALSE)

Arguments

... ゼロ個以上の論理値ベクトル.長さゼロの他のオブジェクトは無視され,残りは任意のクラスを無視して論理値に強制変換される.

na.rm 論理値.もし真なら NA値は結果を計算する前に取り除かれる.

Details

これは総称的関数である:メソッドを直接または Summaryグループ総称として書くことが出来る.これが適正に働くためには,引数 ... は名前無しで,選択適用は最初の引数に関する必要がある.

整数以外の型(バイト,倍精度実数,複素数,文字,リスト)への強制変換は想定外であり警告が出る.

これはプリミティブな関数である.

Value

値は長さ1の論理値ベクトル.

xを(強制変換後の) ...中のすべての論理値ベクトルを連結したものとする.na.rm = TRUEならば NAは取り除く.

返される値はもし x中の値が少なくとも一つ TRUEならば TRUEで,すべてが FALSEならば FALSEになる(値が一つもない場合を含む).さもなければ値は NAである(これはもしna.rm = FALSEで ... が値 TRUEを一つも含まず,そして少なくとも一つの NA値を含む場合に起こる).

S4メソッド

これは S4 Summary グループ総称の一部である.それに対するメソッドはシグネチャx, ..., na.rmを利用しなければならない.

References

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

See Also

anyと相補的な all.

Page 24: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

24 aperm

Examples

range(x <- sort(round(stats::rnorm(10) - 1.2, 1)))if(any(x < 0)) cat("x contains negative values\n")

aperm Array Transposition

Description

配列をその次元を並べ替えて転置する.オプションでサイズを変更する.

Usage

aperm(a, perm, ...)## Default S3 method:aperm(a, perm = NULL, resize = TRUE, ...)## S3 method for class 'table'aperm(a, perm = NULL, resize = TRUE, keep.class = TRUE, ...)

Arguments

a 転置される配列.

perm 添字を並べ替えるベクトル.普通整数 1:nの並べ替えで, nは aの次元.aが名前付きの次元名を持てば,これは長さ nの文字列ベクトルで良く,これらの名前の並べかえを与える.既定(permの長さがゼロなら常に)は次元を逆順にする.

resize ベクトルはその要素が並べ替えられると同時にサイズも変更すべきかを指示するフラグ(既定では TRUE).

keep.class 結果が aと同じクラスになることを指示する論理値.

... メソッドへの潜在的追加引数.

Value

配列 aの転置版で,添字が permにより並べ替えられている.もし resizeが TRUEならば,配列はその要素が並べ替えられると同時にその形も変更され,dimnamesもまた並べ替えられる;もし resize = FALSEなら返されるオブジェクトは aと同じ次元を持ち,次元名は捨てられる.どちらの場合も他の属性は aからコピーされる.

関数 tは行列の転置のより早くて便利な方法を与える.

Author(s)

Jonathan Rougier, <[email protected]>がより高速な Cへの移植を行った.

References

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

See Also

行列の転置は t.

Page 25: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

append 25

Examples

# 3次元配列 x の最初の二つの添字を入れ替えるx <- array(1:24, 2:4)xt <- aperm(x, c(2,1,3))stopifnot(t(xt[,,2]) == x[,,2],

t(xt[,,3]) == x[,,3],t(xt[,,4]) == x[,,4])

UCB <- aperm(UCBAdmissions, c(2,1,3))UCB[1,,]summary(UCB) # UCB は依然分割表

append Vector Merging

Description

ベクトルに要素を付け加える.

Usage

append(x, values, after = length(x))

Arguments

x 修正されるベクトル.

values 修正されるベクトルに含められる値.

after 添字,その後に値が付加される.

Value

xの値を含むベクトルで,その指定の要素の後に要素 valuesが付加される.

References

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

Examples

append(1:5, 0:1, after = 3)

Page 26: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

26 apply

apply Apply Functions Over Array Margins

Description

関数を配列または行列のマージンに適用して得られる値のベクトル,配列またはリストを返す.

Usage

apply(X, MARGIN, FUN, ...)

Arguments

X 配列,行列を含む.

MARGIN 関数が適用されるべき添字を与えるベクトル.例えば行列に対しては 1は行, 2は列,c(1, 2)は行と列を指示する. Xが名前付きの次元を持てば,これは次元名を選択する文字列ベクトルでも良い.

FUN 適用される関数:‘詳細’を見よ. +, %*%等の関数の場合関数名は逆引用化もしくは引用化されなければならない.

... FUNへの追加引数.

Details

もし Xが配列ではないが(データフレームのような)ヌルでない dim値を持つクラスのオブジェクトなら,apply はそれを2次元なら as.matrix を使い行列に,または as.arrayを使い配列に強制変換する.

FUNは match.funの呼び出しで探索され,典型的には関数かシンボル(バックコートで引用化された名前)もしくは applyへの呼び出し環境から探索される関数を指定する文字列である.

... 中の引数は他の引数のどれかと同じ名前を持つことはできず, MARGINや FUNへの部分マッチングを避けるように注意が必要である.一般的用途向けのコード中では,もし... に引数を渡すならば,最初の三つの引数には名前をつけ,仮に引数 X, MARGINそしてFUNの名前が ... を通じて渡されたらそれと分かるようなエラーが起こるようにすることは良い作法である..

Value

もし FUNへの各呼び出しが長さ nのベクトルを返すならば, n > 1であれば applyは次元 c(n, dim(X)[MARGIN])の配列を返す.もし nが 1に等しければ,applyは MARGINが長さ1ならばベクトルを,さもなければ次元 dim(X)[MARGIN]の配列を返す.もし nが 0ならば,結果は長さが 0の必ずしも正確とは言えない次元を持つ.

もし FUNへの呼び出しが異なった長さのベクトルを返すのならば, applyはリストを返し,長さは prod(dim(X)[MARGIN])であるがもしこれが 1より大きな長さを持てば dimはMARGINに設定される.

すべてのケースで結果は次元の設定前に as.vectorで基本ベクトル型の一つに変換されるので,(例えば)因子は文字列配列に強制変換されるであろう.

Page 27: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

args 27

References

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

See Also

lapplyとその同類 simplify2array; tapply,そして簡便化関数の sweepと aggregate.

Examples

## 行列の列和と行和を計算:x <- cbind(x1 = 3, x2 = c(4:1, 2:5))dimnames(x)[[1]] <- letters[1:8]apply(x, 2, mean, trim = .2)col.sums <- apply(x, 2, sum)row.sums <- apply(x, 1, sum)rbind(cbind(x, Rtot = row.sums), Ctot = c(col.sums, sum(col.sums)))

stopifnot( apply(x, 2, is.vector))

## 行列の列をソートapply(x, 2, sort)

## 名前付き次元名を保存names(dimnames(x)) <- c("row", "col")x3 <- array(x, dim = c(dim(x),3),

dimnames = c(dimnames(x), list(C = paste0("cop.",1:3))))identical(x, apply( x, 2, identity))identical(x3, apply(x3, 2:3, identity))

##- 追加引数を持つ関数:cave <- function(x, c1, c2) c(mean(x[c1]), mean(x[c2]))apply(x, 1, cave, c1 = "x1", c2 = c("x1","x2"))

ma <- matrix(c(1:4, 1, 6:8), nrow = 2)maapply(ma, 1, table) #--> a list of length 2apply(ma, 1, stats::quantile) # 行名を持つ 5 x n 行列

stopifnot(dim(ma) == dim(apply(ma, 1:2, sum)))

## 各呼び出し毎に異なった長さを持つ例z <- array(1:24, dim = 2:4)zseq <- apply(z, 1:2, function(x) seq_len(max(x)))zseq ## 2 x 3 行列typeof(zseq) ## リストdim(zseq) ## 2 3zseq[1,]apply(z, 3, function(x) seq_len(max(x)))# 次元属性を持たないリスト

args Argument List of a Function

Page 28: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

28 Arithmetic

Description

関数やプリミティブの引数名と対応する既定値を表示する.

Usage

args(name)

Arguments

name 関数(クロージャまたはプリミティブ).もし nameが文字列ならばその名前の関数が探されて使われる.

Details

この関数は主に関数の引数リストをプリントするために対話的に使われる.プログラミングのためには代わりに formalsの使用を考えよう.

Value

クロージャに対しては,同一の形式的引数リストとを持つクロージャであるが,空の(NULL)本体を持つ.

プリミティブに対しては,ドキュメント化された用法と NULL本体を持つクロージャ.ある種のプリミティブは名前付きの引数を利用せず,名前ではなく位置でマッチすることを注意しよう.

関数でなければ NULL.

References

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

See Also

formals, help.

Examples

args(c)args(graphics::plot.default)

Arithmetic Arithmetic Operators

Description

これらの単項,二項演算子は数値や複素数ベクトル (もしくはそれらに強制変換できるもの)への算術演算を実行する.

Page 29: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Arithmetic 29

Usage

+ x- xx + yx - yx * yx / yx ^ yx %% yx %/% y

Arguments

x, y 数値や複素数ベクトルもしくはそれらに強制変換できオブジェクト,もしくはメソッドが定義されている他のオブジェクト.

Details

単項と二項演算子は総称的である:それらからメソッドを個別に,もしくは Opsグループ総称的関数経由で定義できる.(これがどのように選択適用されるかについては Opsを見よ.)

配列に適用されると,もしそれが意味を持てば,結果は数列になる (例えばリサイクル規則が呼び出されるとそうではなくなる).

論理ベクトルは整数ベクトル化か数値ベクトルに強制変換される. FALSEは値0を,TRUEは値1を持つ.

1 ^ yと y ^ 0は常に 1であり, x ^ yはどちらかの数値引数が infinite (Infか -Inf)の時もまた適正な極限を与えるべきである.

配列や時系列オブジェクトは,それらが両立可能ならば,このように演算可能である.

倍精度引数に対しては %%は,xが yより相当大きい場合は,破滅的な精度のロスをもたらす可能性があり,これが検知された場合は警告が出される.

%%と x %/% yは非整数の yに対しても,例えば 1 %/% 0.2のように使える.しかしその結果は表示エラーになる可能性があり,従ってプラットフォーム依存である. 0.2のIEC 60059表現は2進少数であり 0.2よりわずかに大きいので,1 %/% 0.2への結果は 4になるべきであるが,殆どのプラットフォームでは 5になる.

例えば (-8)^(1/3)がなぜ NaNになるのかなど,ユーザは時折返り値に驚かされるかもしれない. double入力に対しては,Rはすべてのプラットフォームで IEC 60559算術規則を使い,^演算子に対してはCシステムの ‘pow’を使う.関係する標準は多くの境界領域での結果を定義している.特に,上の例の結果は C99標準に従っている.多くのUnix風システムでは命令 man powが多くの境界領域での値に対する詳細を与える.

Rでのタイプ doubleの演算は ‘最近接値への丸め,タイならば平均する’流儀で行われることになっている.しかしながら,これはコンパイラーと FPUが適正に設定されていることに依存している.

Value

単項演算 +と -は数値もしくは複素数ベクトルを返す.(クラスを含む)すべての属性は,もし強制変換が行われなければ保存される:論理値 xは整数に強制変換され,名前,次元,次元名は保存される.

二項演算は要素ごとの演算結果を含むベクトルを返す.もし長さがゼロのオブジェクトがあれば結果は長さゼロとされる.さもなければ,短い方のベクトルの要素は必要に応

Page 30: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

30 Arithmetic

じてリサイクルされる (部分的にリサイクルされる際は警告 warningがされる).演算子+は加算,-は減算,*は乗算, /は除算,そして ^は指数演算である.

%%は x mod yを,そして %/%は整数商を表す.y == 0で無い限り(丸め誤差を除いて)x == (x %% y) + y * (x %/% y )が保証される.もし y == 0か,引数が finiteで無いならば %%の結果は(引数の typeofに応じて) NA_integer_か NaNになる.

もしどちらか引数が複素数ならば結果は複素数になる.もしどちらの引数も複素数で無く,一方もしくは双方が数値ならば結果は数値になる.もし双方の引数がタイプ integerならば /と ^の結果は numericで,他の演算の結果は整数になる (±(231 − 1)の時はオーバーフローになり警告と共に NA_integer_とされる).

結果の属性を決定する規則はかなり複雑である.殆どの属性はより長い方の引数から取られる.名前は,もしその長さが結果と同じなら最初の引数からコピーされ,さもなければもし二番目の引数の長さが結果のそれと同じなら二番目の引数からコピーされる.もし引数が同じ長さなら,属性は双方からコピーされ,もし同じ属性が双方の引数に存在すれば,最初の引数のそれらが優先される.時系列に対しては,演算は系列が両立するときだけ許され,その際は,どちらにせよ時系列であるもの(どちらも時系列ならば同じもの)のクラスと tsp属性が使用される.配列(及び結果の配列)に対しては,最初の引数が配列ならば次元と次元名はそれから,さもなければ二番目から取られる.

S4 methods

これらの演算子は S4グループ総称的関数 Arithのメンバーであり,従ってメソッドを個々に,もしくは総称的グループ (もしくは Ops総称的グループ)に対して定義できる.引数は c(e1, e2) (単項演算子では e2が欠けている).

Implementation limits

Rは浮動小数点演算に関しては OSサービス(とFPU)に依存している.現在のすべての Rプラットフォームでは IEC 60559 (IEEE 754としても知られている)算術規則が使われているが,これらの標準の幾つかの事項はオプションである.特に, 非正規数 (.Machineで与えられる範囲外の数値)はプラットフォーム間や,単一のプラットフォームでも計算ごとに異なる可能性がある.

今一つの問題は符号付きのゼロである:IEC 60659準拠のプラットフォームでは内部表現が符号だけ異なる二種類のゼロがある.可能な場所では Rはそれらを同一のものとして扱うが, Cコードからの直接の出力はしばしばそうではなく,‘-0.0’を出力することがある(ウィンドウズではそうなるかどうかはバージョンに依存する). Rでこの違いが顕になるのはゼロによる除算である: 1/xはゼロ_codexの符号次第で Infか -Infになる.

Note

長さゼロのベクトルを含むすべての論理値演算は長さゼロの結果を返す.

二項演算子は時折 `&`(x, y)のような関数として呼び出される:引数の照合がどのように行われるかについては Opsの記述を見よ.

** は構文解析器により ^ に変換されるが,このことは長い間ドキュメント化されていなかった.これは Becker et al (1988) の索引項目に登場し,Deprecated のヘルプを参照しているが実際にはその頁に述べられていなかった. Sでは20年間廃止されているが,2008年の Rでは依然として有効である.

References

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

Page 31: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

array 31

D. Goldberg (1991) What Every Computer Scientist Should Know about Floating-Point ArithmeticACM Computing Surveys, 23(1).Postscript version available at http://www.validlab.com/goldberg/paper.ps Extended PDFversion at http://www.validlab.com/goldberg/paper.pdf

See Also

関連する話題は sqrtを,特殊な数値関数については Special.

演算の優先順位については Syntax.

行列積については %*%.

Examples

x <- -1:12x + 12 * x + 3x %% 2 #-- 周期的x %/% 5

array Multi-way Arrays

Description

配列を作る,テストする.

Usage

array(data = NA, dim = length(data), dimnames = NULL)as.array(x, ...)is.array(x)

Arguments

data 配列を埋めるデータを与えるベクトル(リストや expression を含む).原子的でないクラス付きオブジェクトは as.vectorで変換される.

dim 作成される配列に帯する次元属性,つまり長さ1以上の整数ベクトルで各次元の最大添字を与える.

dimnames NULLか次元に対する名前.これはリストでなければならず(さもなければ無視される),各次元毎に1成分を持ち,それぞれ NULLかその次元に対する mを長さに持つ文字列ベクトルである.リストは名前を持つことができ,リスト名は次元に対する名前として使える.もしリストが次元数より短ければ,NULLで必要な長さまで延長される.

x Rオブジェクト.

... メソッドへ,から引き渡される追加引数.

Page 32: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

32 array

Details

Rの配列は1,2もしくはそれ以上の次元を持つことが出来る.これは単に次元を与える追加属性をもつベクトルで,オプションでこれらの次元に名前を持つことが出来る(属性"dimnames").

二次元配列は matrixと同じものである.

1次元配列はしばしばベクトルと同じに見えるが,ある種の関数では異なった扱いを受ける: strは最近の Rのバージョンでは区別される.

属性 "dim"は非負の値を持つ長さ1もしくはそれ以上の整数ベクトルである:値の積は配列の長さに一致する必要がある.

属性 "dimnames"はオプションである:もしあればそれは各次元毎に一つの成分を持つリストで,NULLかその次元に与えられた "dim"属性の要素で与えられる長さの文字列ベクトルである.

is.arrayはプリミティブ関数である.

リスト配列に対しては,メソッド print は長さが1でない項目を型と長さを示す形式‘integer,7’で表す.

Value

arrayは dimで指定される広がりと dimnames中の命名情報を持つ配列を返す.data中の値は配列中に左側の添字が最も早く変化するように収められる.もし data中の要素が配列を埋めるのに少なすぎれば data中の要素がリサイクルされる.もし dataが長さ0をもてば,適当な型の NA (バイト型には 0)が原子的なベクトルに,リストには NULLが使われる.

matrixとはことなり,arrayは現在 as.vectorが残すクラス付きリスト dataからの属性を取り除かない.

as.array は配列への強制変換のための総称的関数である.既定メソッドはこれを属性dimを付け加えることで行う.もし xが namesを持てば,dimnamesも付加される.これの唯一の目的は後で dim[names]属性にアクセス出来るようにすることである.

is.arrayは TRUEか FALSEをその引数が配列であるか (つまり正の長さの dim属性をもつか)どうかに従って返す.これは総称的である:特定のクラスのオブジェクトを処理するメソッドを書くことが出来る, InternalMethodsを見よ.

Note

is.arrayはプリミティブな関数.

R 2.x.yは(ドキュメント化されていなかったが)長さゼロの dim引数を認めており,そして長さ1のベクトルを返した.

References

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

See Also

aperm, matrix, dim, dimnames.

Page 33: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

as.data.frame 33

Examples

dim(as.array(letters))array(1:3, c(2,4)) # 1:3 を "2 2/3 回" リサイクル# [,1] [,2] [,3] [,4]#[1,] 1 3 2 1#[2,] 2 1 3 2

as.data.frame Coerce to a Data Frame

Description

オブジェクトがデータフレームかどうか検査する,可能ならば強制変換する関数.

Usage

as.data.frame(x, row.names = NULL, optional = FALSE, ...)

## S3 method for class 'character'as.data.frame(x, ...,

stringsAsFactors = default.stringsAsFactors())

## S3 method for class 'matrix'as.data.frame(x, row.names = NULL, optional = FALSE, ...,

stringsAsFactors = default.stringsAsFactors())

is.data.frame(x)

Arguments

x 任意の Rオブジェクト.

row.names NULLまたはデータフレームに対する行名を与える文字列ベクトル.欠損値は許されない.

optional 論理値.もし TRUE なら行名の設定と,列名の変換 (構文的な名前:make.namesを見よ)はオプションになる.

... メソッドから/へ引き渡される追加引数.stringsAsFactors

論理値:文字列ベクトルは因子に変換されるべきか?

Details

as.data.frame は多くのメソッドをもる総称的関数で,ユーザやパッケージは追加のメソッドを提供できる.ベクトルとして作用するクラスに対してはしばしばコピーas.data.frame.vectorがメソッドとして使える.

もしリストが提供されると,各要素はデータフレームの列に変換される.同様に,行列の各列は別々に列に変換される.これはもしオブジェクトが as.data.frameに対するメソッドを持てば優先されることが出来る.二つの例はクラス "model.matrix"の行列(単一の列として含められる)とクラス "POSIXlt"のリストオブジェクトでクラス "POSIXct"に強制変換される.

Page 34: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

34 as.Date

配列はデータフレームに変換できる.1次元配列はベクトルと, 2次元配列は行列と同じように扱われる.それ以上の次元を持つ配列は最初の次元以降のすべての次元を‘扁平化’し,適当な列ラベルを作ることで行列に変換される.

文字列変数は Iで防御されない限り因子の列に変換される.

もしデータフレームが与えられれば,"data.frame"に先立つすべてのクラスが取り除かれ,もしそれようの変数が与えられれば行名は変更される,

もし row.names = NULL ならば,行名は x の名前か次元名から作られる.さもなければ1から始まる整数列になる.殆どのメソッドは重複した行名をチェックしない. Iを使わない限り,ベクトル列から名前が取り除かれる.

Value

as.data.frameはデータフレームを返す.もし optional = TRUEならばすべての行名は""となる.

is.data.frameは文字引数がデータフレームならば TRUEを返す(つまりそのクラスの一つが "data.frame"),さもなければ FALSEを返す.

References

Chambers, J. M. (1992) Data for models. Chapter 3 of Statistical Models in S eds J. M. Chambersand T. J. Hastie, Wadsworth & Brooks/Cole.

See Also

data.frame, tableメソッドには as.data.frame.table (もし直接呼び出されるなら追加引数を持つ).

as.Date Date Conversion Functions to and from Character

Description

暦日を表すクラス "Date"のオブジェクトと文字列表現間を変換する関数.

Usage

as.Date(x, ...)## S3 method for class 'character'as.Date(x, format, ...)## S3 method for class 'numeric'as.Date(x, origin, ...)## S3 method for class 'POSIXct'as.Date(x, tz = "UTC", ...)

## S3 method for class 'Date'format(x, ...)

## S3 method for class 'Date'as.character(x, ...)

Page 35: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

as.Date 35

Arguments

x 変換されるべきオブジェクト.

format 文字列.もし指定されないと最初の NA要素に対して "%Y-%m-%d"それから "%Y/%m/%d"が試みられ,どちらも失敗すればエラーになる.さもなければ,処理は strptime経由でなされる.

origin 日付オブジェクトもしくはそうしたオブジェクトに as.Date(origin, ...)で変換できるもの.

tz タイムゾーン名.

... メソッドに/から引き渡される追加引数, as.characterと as.Dateメソッドに formatを含む.

Details

通常のリサイクル規則が xと formatに適用され,結果の長さはベクトルのそれの長い方になる.

文字列から/へのロケール固有の変換が適当で可能なら使われる.これは時刻と日付の名前に影響する.

as.Dateメソッドは文字列,因子,論理 NAそしてクラス "POSIXlt"と "POSIXct"のオブジェクトを受け付ける. (後者は日付に指定されたタイムゾーン,既定値 UTC,における時刻の表現中の真夜中以降の時間を無視して変換される.またクラス "date" (パッケージ dateから)と "dates" (パッケージ chronから)のオブジェクトも同様である.文字列は可能な限り指定された書式に対して処理される:任意の後に続く文字は無視される.

as.Date は数値データ(ある起源からの日数)が, origin が提供されている時だけである.

formatと as.characterメソッドは日付の小数部分を無視する.

Value

formatと as.characterメソッドは日付を表す文字列を返す.日付の NAは NA_character_として返される.

as.Dateメソッドはクラス "Date"のオブジェクトを返す.

他のシステムからの変換

殆どのシステムは日付を内部的にある原点からの日数で記録するが,これは次のような問題をはらんでいる

• 原点は0日か1日か? ‘例’が示すように, Excelはその二つの日付システムで両方の選択を扱っている.

• もし原点が極端に過去ならば,デザイナは暦日システムに対する無知をさらけ出すかもしれない.例えば,Excel の設計者は1900年が閏年だと考えていた (昔の DOSの表計算ソフトからコピーされたと言われている).Matlabの設計者はカレンダーを指定せず,存在しない ‘January 0, 0000’ という日付(そうした日付は無い)を選択した.(そうした年は ISO 8601:2004で使われた ‘Gregorian’カレンダーでは存在するが,これは1582年以前については関係者間の合意の下で情報の交換用に使われるべきだと述べてある.)

唯一の安全な手順は既知の日付に対して他のシステムをチェックすることである:インターネット上の報告(R-helpを含む)はよりしばしば正しいよりは間違いである.

Page 36: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

36 as.Date

Note

既定の書式は ISO 8601国際標準に従い,日付は "2001-02-03"のように表される.

もし日付文字列が日付を完全には特定しない場合,帰ってくる答えはシステム依存である可能性がある.最も普通の挙動は欠損した年月日が現在のものと仮定することである.もしこれが日付を不正確に特定するならば,信頼できる実装ではエラーを与え,日付はNAになる.残念ながら幾つかの普通の実装(‘glibc’のような)は信頼できず意図された意味を推測する.

1CE (1ADとも呼ばれる)以前の年は恐らく正確には処理されないであろう.

References

International Organization for Standardization (2004, 1988, 1997, . . . ) ISO 8601. Data elementsand interchange formats – Information interchange – Representation of dates and times. オンラインで入手できるバージョンのリンクとしては(執筆時) http://www.qsl.net/g1smd/isopdf.htmを見よ.

See Also

日付クラスの詳細は Date;ロケールの問い合わせと設定は locales.

これらの書式を指定する方法を見るにはシステムの strftimeと strptimeのヘルプページ.Windowsでは strptimeに対するヘルプページが無い: ‘glibc’に基づくコードが用いられており(修正と共に),従ってここで説明されたすべての書式がサポートされているが,任意のロケールにおける別種の数の表示も年号もサポートされない.

Examples

## 日にちのロケール固有版format(Sys.Date(), "%a %b %d")

## 日付け情報をを形式 'ddmmmyyyy' で読み込む## これはあるロケールでは NA を与える:コマンドラインで C ロケールを## 設定すればほとんどのシステムで上手く行く.## lct <- Sys.getlocale("LC_TIME"); Sys.setlocale("LC_TIME", "C")x <- c("1jan1960", "2jan1960", "31mar1960", "30jul1960")z <- as.Date(x, "%d%b%Y")## Sys.setlocale("LC_TIME", lct)z

## 日付け/時刻情報を書式 'm/d/y' で読み込むdates <- c("02/27/92", "02/27/92", "01/14/92", "02/28/92", "02/01/92")as.Date(dates, "%m/%d/%y")

## 1900-01-01 以来の日数(1989年のある日)as.Date(32768, origin = "1900-01-01")## Excel は 1900-01-01 を第一日 (Windows の既定) または## 1904-01-01 を第0日 (Mac の既定)としていると言われる,しかしこれは Excel が## 1900 年を不正確に閏年としているため混乱している.## 従って Windows Excel では日付は (1901年以降)as.Date(35981, origin = "1899-12-30") # 1998-07-05## Mac Excel ではas.Date(34519, origin = "1904-01-01") # 1998-07-05## (これらの値は http://support.microsoft.com/kb/214330 から)

Page 37: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

as.environment 37

## 実験では Matlab の日付け原点は我々のより719529日早い,## (存在しない 0000-01-01 を初日としている)## 従って Matlab の734373日は次のように移入できるas.Date(734373, origin = "1970-01-01") - 719529 # 2010-08-23## (以下からの値 http://www.mathworks.de/de/help/matlab/matlab_prog/## represent-date-and-times-in-MATLAB.html)## タイムゾーン効果z <- ISOdate(2010, 04, 13, c(0,12)) # UTC の真夜中と真昼as.Date(z) # UTC で## これらのタイムゾーン名はありふれているas.Date(z, tz = "NZ")as.Date(z, tz = "HST") # ハワイ

as.environment Coerce to an Environment Object

Description

Rオブジェクトを environmentに環境に変換する総称的関数.数値もしくは文字列が検索パス上の対応する環境に変換される.

Usage

as.environment(x)

Arguments

x 変換すべきオブジェクト.もしこれがすでに環境なら単にそれを返す.もしそれが正数ならば検索リスト上のその位置に対応する環境を返す.もしそれが -1なら,それが呼び出されている環境.もしそれが文字列ならば,文字列を検索リスト上の名前とマッチする.

もしそれがリストなら,list2env(x, parent = emptyenv())と同値なものが返される.

もし is.object(x)が真で,as.environmentメソッドが見つかる classを持てば,それが使われる.

Value

対応する環境オブジェクト.

Note

これは primitive関数である.

Author(s)

John Chambers

See Also

生成と操作については environment, search; list2env.

Page 38: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

38 as.function

Examples

as.environment(1) ## 大局的環境identical(globalenv(), as.environment(1)) ## TRUE であるtry( ## <<- stats を付加する必要はない

as.environment("package:stats"))ee <- as.environment(list(a = "A", b = pi, ch = letters[1:8]))ls(ee) # ee 中のオブジェクトの名前utils::ls.str(ee)

as.function Convert Object to Function

Description

as.functionは総称的関数でオブジェクトを関数に変換するために使われる.

as.function.defaultはリスト xに作用し,形式的引数リストを連結したものと,表現式か関数本体になるモード "call"のオブジェクトを含む.関数は指定された環境中に定義され,既定では呼び出し環境である.

Usage

as.function(x, ...)

## Default S3 method:as.function(x, envir = parent.frame(), ...)

Arguments

x 変換されるオブジェクト,既定メソッドに対してはリスト.

... 追加引数,オブジェクトによる.

envir 関数が定義されるべき環境.

Value

希望する関数.

Note

歴史的理由から envir = NULL は基礎環境ではなく大局的環境を使う. NULL の特別な処理は将来変更される可能性があるので,もしこれが希望するものなら代わりにenvir = globalenv()をつかってほしい.

Author(s)

Peter Dalgaard

See Also

function; alistは引数リスト等を構成するのに便利である.

Page 39: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

as.POSIX* 39

Examples

as.function(alist(a = , b = 2, a+b))as.function(alist(a = , b = 2, a+b))(3)

as.POSIX* Date-time Conversion Functions

Description

暦日と時刻を表すクラス "POSIXlt"と "POSIXct"のオブジェクトを操作する関数.

Usage

as.POSIXct(x, tz = "", ...)as.POSIXlt(x, tz = "", ...)

## S3 method for class 'character'as.POSIXlt(x, tz = "", format, ...)

## S3 method for class 'numeric'as.POSIXlt(x, tz = "", origin, ...)

## S3 method for class 'POSIXlt'as.double(x, ...)

Arguments

x 変換されるオブジェクト.

tz 必要とされるのなら変換で使われるタイムゾーンの指定.システム依存(time zonesを見よ)であるが,""は現在のタイムゾーンで, "GMT"はUTC (Universal Time, Coordinated).不正な値は最も普通に UTC とされるが,警告が出るプラットフォームがある.

... 他のメソッドに/から引き渡される追加引数.

format strptimeが使うような日付け時刻書式を与える文字列.

origin 日付け時刻オブジェクト,または as.POSIXct(tz = "GMT")によりそうしたオブジェクトに変換可能な何か.

Details

関数 as.POSIX*はオブジェクトを日付/時刻(暦日と最近接秒までの時刻)を表現する二つのクラスの一つに変換する.他のクラスのオブジェクトやクラス "Date", "date" (パッケージ dateから), "chron"と "dates" (パッケージ chronから)を含む広範囲のオブジェクトをこのクラスに変換できる.時刻なしの日付は UTCの真夜中にあるとして処理される.

これらはまた書式 "2001-02-03"と "2001/02/03"の文字列を変換できる.オプションで空白の後に時刻を書式 "14:52"または "14:52:03"を加えることが出来る. ("01/02/03"といった書式は曖昧であるが,strptimeによる書式指定で変換できる.小数秒は許される.別法としてformatは文字列ベクトルや因子に対して指定できる;もしそれが指定されず標準の書式がすべての非 NA入力に対応できなければエラーが生じる.

Page 40: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

40 as.POSIX*

もし formatを指定するならば,ある種の指定はロケール固有であることを覚えておこう.そして Sys.setlocaleを使って LC_TIMEカテゴリーを設定する必要があるかもしれない.これは最もしばしば %b, %B (月名)そして %p (AM/PM)に影響する.

論理値 NAはどちらのクラスにも変換できるが,他の論理値ベクトルはそうではない.

もしある時点からの秒数で時刻を与えられた場合は例を見よ.

文字列入力は最初 strptime によりクラス "POSIXlt" に変換される:数値入力は最初"POSIXct"に変換される.二つの日付・時刻クラス間を行き来する必要がある変換はタイムゾーンを必要とする."POSIXlt"から "POSIXct"への変換は,選択されたタイムゾーンで時刻を適正化する.一つの問題は DSTへ/からの移行で何が起こるかである.例えばUKでは

as.POSIXct(strptime("2011-03-27 01:30:00", "%Y-%m-%d %H:%M:%S"))as.POSIXct(strptime("2010-10-31 01:30:00", "%Y-%m-%d %H:%M:%S"))

はそれぞれ不適切で曖昧である(時計が 1:00 GMTに 2:00 BSTに戻る).そうしたケースで何が起こるかはOS固有である:最初は NAになることが期待されるが,二つ目は BSTとも GMTとも解釈できる(そして普通の OSは可能な両方の値を与える).また(strftimeを見よ) OS機能は不適切な時刻を正確に整形できないかもしれない.

Value

as.POSIXctと as.POSIXltは適切なクラスのオブジェクトを返す.もし tzが指定されていれば as.POSIXltは適切な "tzone"属性を与える.不適切とされる日付・時刻は NAを返すであろう.

Note

使用される幾つかの概念は時間で過去にさかのぼって拡張される必要がある (これは‘proleptic’と呼ばれる).例えば, "POSIXct"クラスの原点は ‘1970-01-01 00:00.00 UTC’であり,これは UTCが定義されるよりも前である.より重要なこととして,変換は 1582年に導入され20世紀まで広く使われていなかったグレゴリオ暦を使って行われる. ISO8601:2004によって仮定されている再解釈の一つはゼロ年が存在するということである.現在の年の番号付け(そしてゼロ)はかなり後世の概念であるにもかかわらず (1 ADからの年数で 525 AD).

もしある時刻の特定の様相を取り出したければ(例えば一週間の曜日),単にそれをクラス "POSIXlt"に変換しリストの関連する成分を取り出す.もしくは文字列表現(一週間の曜日のような)が欲しければ formatメソッドを使う.

もしタイムゾーンが必要で,指定したものが自分のシステムで不適切ならば,何が起こるかはシステム固有であるが,それを設定しようとしてもおそらく無視されるであろう.

文字列からの変換は与えられていな限り適当な書式を見つける必要がある (通常の書式を順に試す):これは長い入力に対しては遅い可能性がある.

See Also

クラスの詳細についてはDateTimeClasses;文字表現から/への変換については strptime.

(システム固有の)タイムゾーンの命名については Sys.timezone.

ロケール固有の様相については locales.

Page 41: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

AsIs 41

Examples

(z <- Sys.time()) # クラス "POSIXct" としての現在の日時unclass(z) # 大きな整数floor(unclass(z)/86400) # 1970-01-01 (UTC) からの日数(now <- as.POSIXlt(Sys.time())) # クラス "POSIXlt" としての現在の日時unlist(unclass(now)) # 名前付きベクトルとして示されたリストnow$year + 1900 # ?DateTimeClasses を見よmonths(now); weekdays(now) # ?months を見よ

## 1960-01-01 00:00:00 GMT 以来の秒単位の時間があるとする## (SAS で使われる原点)z <- 1472562988# ways to convert thisas.POSIXct(z, origin = "1960-01-01") # ローカルas.POSIXct(z, origin = "1960-01-01", tz = "GMT") # UTC で

## SPSS dates (R-help 2006-02-16)z <- c(10485849600, 10477641600, 10561104000, 10562745600)as.Date(as.POSIXct(z, origin = "1582-10-14", tz = "GMT"))

## Stata の日時:1960-01-01 00:00:00 GMT からのミリ秒数## 書式t %tc は閏秒を除外する,ここでは仮定する## 閏秒を含む書式 %tC ,foreign::read.dta() を見よz <- 1579598122120op <- options(digits.secs = 3)# 丸め落ちを防ぐ:ミリ秒は正確には表現できないas.POSIXct((z+0.1)/1000, origin = "1960-01-01")options(op)

## Matlab の '日付けの通し番号' (日付けと小数日)z <- 7.343736909722223e5 # 2010-08-23 16:35:00as.POSIXct((z - 719529)*86400, origin = "1970-01-01", tz = "UTC")

as.POSIXlt(Sys.time(), "GMT") # UTC での現在の時刻

## これらはあなたのシステムでは正しい名前ではないかもしれないas.POSIXlt(Sys.time(), "America/New_York") # New York ではas.POSIXlt(Sys.time(), "EST5EDT") # 別法.as.POSIXlt(Sys.time(), "EST" ) # カナダ東部のどこやらas.POSIXlt(Sys.time(), "HST") # ハワイではas.POSIXlt(Sys.time(), "Australia/Darwin")

AsIs Inhibit Interpretation/Conversion of Objects

Description

‘そのまま’で扱うようにオブジェクトのクラスを変更する.

Usage

I(x)

Page 42: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

42 assign

Arguments

x オブジェクト

Details

関数 Iは二つの主な用法を持つ.

• 関数 data.frame中.data.frameの呼び出し中でオブジェクトを I()の中に入れて囲み保護することで,文字列ベクトルの因子への変換と名前の除去を禁止し,行列が単一の列として挿入されることを保証する. Iはまたデータフレームに追加されるオブジェクトや as.data.frameを使ってデータフレームに変換されるオブジェクトの保護にも使われる.

これはオブジェクトのクラスにクラス "AsIs"を付け加えることでなされる.クラス "AsIs"はそれ自体メソッドを幾つか持つ,例えば [, as.data.frame, printそして formatが含まれる.

• 関数 formula 中.ここでは "+", "-", "*" そして "^" といった演算子が公式演算子と解釈されることを防ぎ,算術演算子として使われるようにする.これはterms.formulaにより,シンボルとして解釈される.

Value

クラス "AsIs"がクラスの先頭に付け加えられたオブジェクトのコピー.

References

Chambers, J. M. (1992) Linear models. Chapter 4 of Statistical Models in S eds J. M. Chambersand T. J. Hastie, Wadsworth & Brooks/Cole.

See Also

data.frame, formula

assign Assign a Value to a Name

Description

環境中の名前に値を付値する.

Usage

assign(x, value, pos = -1, envir = as.environment(pos),inherits = FALSE, immediate = TRUE)

Page 43: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

assign 43

Arguments

x 文字列として与えられた変数名.強制変換は一切されず,長さが1より大きい文字列ベクトルは最初の要素だけが使われ,警告が出る.

value xに付値される値.

pos どこで付値を行うか.既定では現在の環境に付値する.他の可能性については‘詳細’を見よ.

envir 使われる environment.‘詳細’を見よ.

inherits 環境の囲みフレームを吟味すべきか?

immediate 互換性のため無視される.

Details

xとして与えられる名前にはいかなる制限もない:非構文的な名前でも良い(make.namesを見よ).

pos 引数はオブジェクトの付値が行われる環境を幾つかの方法のどれでも指定できる:-1 (既定)でも,正整数(searchリスト中の位置)としても,検索リスト中の要素の文字列としても,または(現在アクティブな関数呼び出し (sys.frame の使用を含むにアクセスする environmentでも良い. envir引数は環境を指定する別の方法であるが,主に後方互換性用である.

assignは付値メソッドを選択適用しないので,ベクトル,名前,属性等を設定するために使うことはできない.

付加されたリストやデータフレームへの付値は,付加されたコピーを変更しオリジナルは変更しない:attachと withを見よ.

Value

この関数はその副作用のために使われ,valueを変数 xに付値する.もし envirが指定されなければ,付値は現在アクティブな環境で行われる.

もし inheritsが TRUEならば,提供された環境の囲み環境が xが見つかるまで探索される.それから値への付値が変数が見つかった環境中で行われる (結合がロックされていない限り:lockBinding を見よ:もしそうならエラーが起きる).もしシンボルが見つからなければ付値はユーザの作業空間(大局的環境)で行われる.

もし inheritsが FALSEなら,既存の結合がロックされているか,既存の結合はないが環境がロックされていない限り(エラーが起きる),付値は envirの初期フレームで行われる.

References

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

See Also

<-, get, exists, environment.

Page 44: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

44 assignOps

Examples

for(i in 1:6) { #-- オブジェクト 'r.1', 'r.2', ... 'r.6' -- を作るnam <- paste("r", i, sep = ".")assign(nam, 1:i)

}ls(pattern = "^r..$")

##-- 関数内部での大局的付値:myf <- function(x) {

innerf <- function(x) assign("Global.res", x^2, envir = .GlobalEnv)innerf(x+1)

}myf(3)Global.res # 16

a <- 1:4assign("a[1]", 2)a[1] == 2 # FALSEget("a[1]") == 2 # TRUE

assignOps Assignment Operators

Description

名前に値を付値する.

Usage

x <- valuex <<- valuevalue -> xvalue ->> x

x = value

Arguments

x 変数名(引用化されている可能性).

value xに与えられる値.

Details

三種類の異なった付値演算子がある:そのうち二つは左辺形と右辺形を持つ.

演算子 <-と =はそれらが評価された環境中に付値する.演算子 <-はどこでも使えるが,=はトップレベル (例えば,コマンドプロンプトにタイプされた完全な表現式中)か波括弧でくくった表現式のリスト中の副表現式の一つとしてだけ使える.

演算子 <<- と ->> は通常関数中だけで使われ,付値される既存の変数を親環境で探すようにする.もしそうした変数が見つかると(そしてその結合がロックされていなければ)その値が再定義される.さもなければ付値は大局的環境で行われる.これらの構文は

Page 45: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

attach 45

S言語のそれらと異なるが,しかし Rのスコープ規則との関連で有用であることを注意しよう.さらなる詳細と例はマニュアル ‘The R Language Definition’を参照せよ.

すべての付値演算表現式において,xは名前か置き換えられるオブジェクトの一部分を定義する表現式で良いことを注意しよう(例えば z[[1]]).構文的な名前は引用化される必要はないが,そうしても良い(バックチックを使うのが好ましい).

左辺形 <- = <<-は右から左へ,他の形は左から右へ作用する.

Value

value. 従って a <- b <- c <- 6のような使い方が出来る.

References

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

Chamber, J. M. (1998) Programming with Data. A Guide to the S Language. Springer (=に対して).

See Also

“subassignment”に対する x[i] <- v assign, [<-; environment.

attach Attach Set of R Objects to Search Path

Description

データベースは Rの検索パスに付加される.これは変数を評価する際に Rによりデータベースが検索されることを意味し,このデータベース中のオブジェクトは単にその名前を与えるだけでアクセス可能になる.

Usage

attach(what, pos = 2L, name = deparse(substitute(what)),warn.conflicts = TRUE)

Arguments

what ‘データベース’.これは data.frame,list,saveで作られた Rデータファイル, NULL,もしくは環境でよい.また‘詳細’を見よ.

pos search()で付加すべき位置を表す整数.

name 付加されるデータベースに対して使われる名前. package: で始まる名前は library用に予約されている.

warn.conflicts 論理値.データベースがオブジェクト .conflicts.OKを含まない限り,もし TRUEならデータベースの付加による衝突 conflictsに関して警告がプリントされる.衝突とはある関数をマスクする関数や,非関数をマスクする非関数である.

Page 46: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

46 attach

Details

変数や関数名を評価する際,Rはその名前を searchでリストされるデータベース中で探す.適当なタイプの最初のものが使われる.

データフレーム(もしくはリスト)を検索パスに付加することで,データフレーム中の変数を,データフレームの成分としてではなく,それらの名前だけで参照することが可能になる (例えば下の例の中では women$height)ではなく heightで).

既定ではデータベースは検索パス中の位置 2に付加される.これはユーザの作業空間の直後で以前に付加されたパッケージやデータベーズの前になる.これは posオプションを使って検索パスの後方位置に変更できるが, pos = 1に付加することはできない.

データベースは実際には付加されない.そうではなく,新しい環境が検索パス上に作られ,リスト(データフレームの列を含む)の要素や,セーブされたファイルや環境中のオブジェクトが新しい環境中にコピーされる.もし付加されたデータベースに <<- やassignを使って付値すると付加されたコピーが変更されるだけでオリジナルのオブジェクトは未変更である. (普通の付値は変更されたバージョンをユーザの作業空間中に置く:例を見よ.)この理由から attachは混乱を招くことがある.

一つの有用な‘トリック’は新しい環境を検索パス上に what = NULL (または同値である長さゼロのリスト)を使って作ることである.オブジェクトはこの中に assign,loadまたは sys.sourceを使って付値することが出来る.

"package:"で始まる名前は library用に予約されており,末端ユーザは使うべきではない.付加されたファイルは既定では名前 file:what を与えられる.付加された環境に対する与えられた name引数は searchによって使うことができ, as.environmentへの引数として使うことが出来る.

クラス "UserDefinedDatabase"のユーザ定義の表オブジェクトを付加するフックが有り,Omegahatパッケージ RObjectTablesでサポートされている. http://www.omegahat.org/RObjectTables/を見よ.

Value

"name"属性を持つ environmentが不可視で返される.

良い作法

attachは検索パスを変更するという副作用を持ち,特定の名前を持つ間違ったオブジェクトが見つかるということにつながりやすい.人はしばしばデータベースを detachすることを忘れる.

対話的な使用では withが通常 attach/detachよりも好ましい.例外は whatが save()で作られたファイルの場合で,その時は attach()が load()に対する(安全な)ラッパである.

プログラミングでは,関数はそれが目的である場合を除いて検索パスを変更すべきではない.しばしば関数内部で withを使うことが出来る.もしそうでなければ,良い作法は

• 常に異なった name引数を使い,そして

• attachのすぐ後に違いがわかりやすい名前を用いた detachへの on.exit呼び出しを続けることである.

これはもし関数が中断されたり,attach呼び出しの後のコードが検索パスを変更しても検索パスが未変更のままになることを保証する.

Page 47: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

attr 47

References

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

See Also

library, detach, search, objects, environment, with.

Examples

require(utils)

summary(women$height) # データフレーム中の変数 'height' を参照attach(women)summary(height) # 同じ変数が今や名前で利用できるheight <- height*2.54 # これをしない,新しい変数が

# ユーザの作業空間に作られるfind("height")summary(height) # 作業空間中の新しい変数rm(height)summary(height) # 元の変数height <<- height*25.4 # 付加された環境中のコピーを変更find("height")summary(height) # 変更されたコピーdetach("women")summary(women$height) # 未変更

## Not run: ## 検索パスに環境を生成し中身を登録sys.source("myfuns.R", envir = attach(NULL, name = "myfuns"))

## End(Not run)

attr Object Attributes

Description

オブジェクトの特定の属性を得る,設定する.

Usage

attr(x, which, exact = FALSE)attr(x, which) <- value

Arguments

x 属性にアクセスするオブジェクト.

which どの属性にアクセスするかを指定する空でない文字列.

exact 論理値:whichは正確にマッチすべきか?

value オブジェクトで,属性の新しい値か,または属性を取り除くにはNULL.

Page 48: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

48 attributes

Details

これらの関数はオブジェクトの一つの属性へのアクセスを提供する.置き換え形は名前付きの属性が指定された値を持つようにする (もしくは与えられた値を持つ新しい属性を作る).

取り出し関数は最初 xの属性のうち whichに正確にマッチするものを探す.(exact = TRUEで無い限り)それからユニークな部分マッチを探す. (options(warnPartialMatchAttr = TRUE)の設定は部分マッチで警告を出すようにする.)

置き換え関数は正確なマッチだけを使う.

ある種の属性(つまり class, comment, dim, dimnames, names, row.namesそして tsp)は特別な扱いがされ,設定できる値に制限を持つ. (これは levels関数経由で因子に対して設定される levelsに対しては真ではないことを注意する.)

取り出し関数は空や欠損値の whichを認める(がマッチしない):置き換え関数は認めない.

双方はプリミティブな関数である.

Value

取り出しに対してはマッチした属性の値か,正確なマッチが無いか二つ以上の部分マッチがあれば NULL.

References

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

See Also

attributes

Examples

# 2 x 5 行列を作るx <- 1:10attr(x,"dim") <- c(2, 5)

attributes Object Attribute Lists

Description

これらの関数はオブジェクトの属性にアクセスする.以下の最初の形式はオブジェクトの属性のリストを返す.置き換え形は付値の右側のチストをオブジェクトの属性として利用する(もし適切ならば).

Usage

attributes(obj)attributes(obj) <- valuemostattributes(obj) <- value

Page 49: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

attributes 49

Arguments

obj オブジェクト

value 適当な名前付きの属性のリスト,または NULL.

Details

attrとは異なり NULLオブジェクトに属性を設定することが出来る:それは先ず空リストに強制変換される.

幾つかの属性(つまりclass, comment, dim, dimnames, names, row.names そして tsp)は特別な扱いがされ,設定できる値に制限がある. (これは levels置き換え関数によって因子に対して設定されるべき levelsに対しては真ではないことを注意する.

属性は内部的にリストとして保管されておらず,ベクトルではなく集合と考えるべきである.それらはユニークな名前を持つべきである(そして NAは "NA"であり,欠損値ではない).

属性の付値はまずすべての属性を取り除き.それから dim属性,そして残りの属性を与えられた順に設定する:これは dim属性の設定が常に dimnames属性に先立つことを保証する.

mostattributesによる付値は dim, namesそして dimnames属性を特別に扱う.そして適正と確認できた時だけそれらを付値する.一方 attributesによる付値はどれかが不適切ならエラーを与える.これは主として配列用であり,クラス付きオブジェクトに対しては慎重に使うべきである.例えば,これは row.namesがデータフレームに対して正しく付値されているかどうかをチェックしない.

対リストの名前は属性としては保管されていないが,あたかもそうであるかのように報告される(そして attributesの置き換え形で設定できる).

attributesの両方の付値と置き換え形はプリミティブな関数である.

References

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

See Also

attr.

Examples

x <- cbind(a = 1:3, pi = pi) # 次元名を持つ簡単な行列attributes(x)

## オブジェクトの属性を剥ぎ取る:attributes(x) <- NULLx # 今や長さ6のベクトル

mostattributes(x) <- list(mycomment = "really special", dim = 3:2,dimnames = list(LETTERS[1:3], letters[1:5]), names = paste(1:6))

x # dim(),しかし {dim}names では無い

Page 50: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

50 autoload

autoload On-demand Loading of Packages

Description

autoloadは評価が約束された autoloaderを作り,それを名前 nameで .AutoloadEnv環境に保存する. Rが nameを評価しようとすると,autoloaderが実行され,パッケージが読み込まれ,そして nameがパッケージの環境中で再評価される.結果として Rはあたかも packageが読み込まれているかのように動作するが,メモリを専有しない.

.Autoloadedは自動読み込みが約束されたパッケージの名前を含む.

Usage

autoload(name, package, reset = FALSE, ...)autoloader(name, package, ...)

.AutoloadEnv

.Autoloaded

Arguments

name オブジェクトの名前を与える文字列.

package オブジェクトを含むパッケージの名前を与える文字列.

reset 論理値:autoloaderによる内部的使用のため.

... libraryへの他の引数.

Value

この関数はその副作用のために起動される.返り値は無い.

See Also

delayedAssign, library

Examples

require(stats)autoload("interpSpline", "splines")search()ls("Autoloads").Autoloaded

x <- sort(stats::rnorm(12))y <- x^2is <- interpSpline(x, y)search() ## 今や splines を持つdetach("package:splines")search()is2 <- interpSpline(x, y+x)search() ## そして再びdetach("package:splines")

Page 51: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

backsolve 51

backsolve Solve an Upper or Lower Triangular System

Description

三角線形方程式系を解く.

Usage

backsolve(r, x, k = ncol(r), upper.tri = TRUE,transpose = FALSE)

forwardsolve(l, x, k = ncol(l), upper.tri = FALSE,transpose = FALSE)

Arguments

r, l 上側(または下側)三角行列で解かれるべきシステムの係数を与える.対角線の下側(上側)の値は無視される.

x その列が方程式系の右辺を与える行列.

k 使用される rの列と xの行の数.

upper.tri 論理値;もし TRUE (既定)ならば rの上側三角部分が使われる.さもなければ下側が使われる.

transpose 論理値;もし TRUEなら r′∗y = xを yに対して解く,つまり t(r) %*% y == x.

Details

係数行列が上側(または ‘右’, ‘R’)または下側(‘left’, ‘L’)三角である線形方程式を解く.

x <- backsolve (R, b)は Rx = bを解く,そしてx <- forwardsolve(L, b)は Lx = bをそれぞれ解く.

r/lは少なくとも k個の行と列を持たなければならない.そして xは少なくとも k個の行を持たなければならない.

これはレベル3の BLASルーティン dtrsmのラッパである.

Value

三角システムの解.もし xがベクトルならば結果はベクトルで,xが行列ならば行列になる.

References

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

Dongarra, J. J., Bunch, J. R., Moler, C. B. and Stewart, G. W. (1978) LINPACK Users Guide.Philadelphia: SIAM Publications.

See Also

chol, qr, solve.

Page 52: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

52 basename

Examples

## 上三角行列 'r':r <- rbind(c(1,2,3),

c(0,1,1),c(0,0,2))

( y <- backsolve(r, x <- c(8,4,2)) ) # -1 3 1r %*% y # == x = (8,4,2)backsolve(r, x, transpose = TRUE) # 8 -12 -5

basename Manipulate File Paths

Description

basenameは最後のパス分離記号(もしあれば)とそれ以前のパスをすべて取り去る.

dirnameは最後のパス分離記号を除いてそれまでの pathの部分を返す.もしくはパス分離器号がなければ "."を返す.

Usage

basename(path)dirname(path)

Arguments

path 文字列でパス名を含む.

Details

dirnameに対してはパスのチルダ展開が行われる.

パスを分解する前に後に続くパス分離記号は取り除かれる.そして dirnameに対してはすべてのファイル分離記号が結果から除かれる.

Value

pathと同じ長さの文字列ベクトル.長さゼロの入力は長さゼロの出力を与えるがエラーにはならない.

分離記号を全く含まないパスは現ディレクトリに所属するとされるので, dirname は"."を返す.

pathのある要素が NAならば結果も同様になる.

""は正しいパス名では無いが,そのままで返される.

Windowsでの挙動

Windowsではこれは \も /もパス分離記号として受け入れるが,dirnameは /を使ったパスを返す (ネットワークシェアを除く,その時は先頭の \\が保存される).これらは完全なパスを処理することだけを企図しており,例えばネットワークシェアやドライブを考慮していない.

現在のロケールで不正な UTF-8でエンコードされたパス名を使うことが出来る.

Page 53: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Bessel 53

Note

これらは同名の POSIXシステム関数に対するラッパではない:特にこれらはパス "/"と空文字列に対する返り値 "."を特別に処理しない.

See Also

file.path, path.expand.

Examples

basename(file.path("","p1","p2","p3", c("file1", "file2")))dirname(file.path("","p1","p2","p3","filename"))

Bessel Bessel Functions

Description

第一種と第二種の,整数次および分数次のベッセル関数 Jν と Yν,そして(第一種と第三種の)変形されたベッセル関数 Iν とKν.

Usage

besselI(x, nu, expon.scaled = FALSE)besselK(x, nu, expon.scaled = FALSE)besselJ(x, nu)besselY(x, nu)

Arguments

x 数値,≥ 0.

nu 数値;対応するベッセル関数の次数 (分数かもしれない! ).

expon.scaled 論理値;もし TRUEならば,結果は桁溢れ (Iν)や桁落ち (Kν)を防ぐためにそれぞれ指数的にスケール変換される.

Details

もし expon.scaled = TRUEならば e−xIν(x),か exKν(x)が返される.

ν < 0に対しては, Abramowitz & Stegunの公式 9.1.2と 9.6.2が適用される(恐らく最良では無い). nuについて対称である besselKを除く.

現在のアルゴリズムは大きな引数に対する精度のロスに対する警告を出す.ある場合には,こうした警告は大げさであり,精度は完全である.例えば数百万のオーダーの,大きな nuに対しては現在のアルゴリズムは滅多に有用ではない.

Value

対応するベッセル関数の値のベクトル(もし expon.scaled = TRUEならスケール化されている).

結果の長さはパラメータの長さの最大値である.すべてのパラメータはその長さまでリサイクルされる.

Page 54: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

54 Bessel

Author(s)

オリジナルのフォートランコード: W. J. Cody, Argonne National LaboratoryCへの変換と Rへの移植: Martin Maechler <[email protected]>.

Source

Cコードは http://www.netlib.org/specfun/ribesl, ‘../rjbesl’,等からのフォートランコードの翻訳である.bessel[IJKY]に対する四つのソースコードは “Acknowledgement”と“References”のパラグラフを含んでいる.その短い要約は次の通りである

besselI based on (code) by David J. Sookne, see Sookne (1973). . . Modifications. . . An earlier ver-sion was published in Cody (1983).

besselJ as besselI

besselK based on (code) by J. B. Campbell (1980). . . Modifications. . .

besselY draws heavily on Temme’s Algol program for Y . . . and on Campbell’s programs for Yν(x). . . . . . . heavily modified.

References

Abramowitz, M. and Stegun, I. A. (1972) Handbook of Mathematical Functions. Dover, New York;Chapter 9: Bessel Functions of Integer Order.

上の “Source”の引用には:

Sockne, David J. (1973) Bessel Functions of Real Argument and Integer Order. NBS Jour. of Res.B. 77B, 125–132.

Cody, William J. (1983) Algorithm 597: Sequence of modified Bessel functions of the first kind.ACM Transactions on Mathematical Software 9(2), 242–245.

Campbell, J.B. (1980) On Temme’s algorithm for the modified Bessel function of the third kind.ACM Transactions on Mathematical Software 6(4), 581–586.

Campbell, J.B. (1979) Bessel functions J_nu(x) and Y_nu(x) of float order and float argument.Comp. Phy. Comm. 18, 133–142.

Temme, Nico M. (1976) On the numerical evaluation of the ordinary Bessel function of the secondkind. J. Comput. Phys. 21, 343–350.

See Also

他の特殊関数,例えば gamma, Γ(x),そして beta, B(x).

Examples

require(graphics)

nus <- c(0:5, 10, 20)

x <- seq(0, 4, length.out = 501)plot(x, x, ylim = c(0, 6), ylab = "", type = "n",

main = "Bessel Functions I_nu(x)")for(nu in nus) lines(x, besselI(x, nu = nu), col = nu + 2)legend(0, 6, legend = paste("nu=", nus), col = nus + 2, lwd = 1)

x <- seq(0, 40, length.out = 801); yl <- c(-.8, .8)plot(x, x, ylim = yl, ylab = "", type = "n",

Page 55: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

bindenv 55

main = "Bessel Functions J_nu(x)")for(nu in nus) lines(x, besselJ(x, nu = nu), col = nu + 2)legend(32, -.18, legend = paste("nu=", nus), col = nus + 2, lwd = 1)

## 負の nu:xx <- 2:7nu <- seq(-10, 9, length.out = 2001)op <- par(lab = c(16, 5, 7))matplot(nu, t(outer(xx, nu, besselI)), type = "l", ylim = c(-50, 200),

main = expression(paste("Bessel ", I[nu](x), " for fixed ", x,", as ", f(nu))),

xlab = expression(nu))abline(v = 0, col = "light gray", lty = 3)legend(5, 200, legend = paste("x=", xx), col=seq(xx), lty=seq(xx))par(op)

x0 <- 2^(-20:10)plot(x0, x0^-8, log = "xy", ylab = "", type = "n",

main = "Bessel Functions J_nu(x) near 0\n log - log scale")for(nu in sort(c(nus, nus+0.5)))

lines(x0, besselJ(x0, nu = nu), col = nu + 2)legend(3, 1e50, legend = paste("nu=", paste(nus, nus+0.5, sep=",")),

col = nus + 2, lwd = 1)

plot(x0, x0^-8, log = "xy", ylab = "", type = "n",main = "Bessel Functions K_nu(x) near 0\n log - log scale")

for(nu in sort(c(nus, nus+0.5)))lines(x0, besselK(x0, nu = nu), col = nu + 2)

legend(3, 1e50, legend = paste("nu=", paste(nus, nus + 0.5, sep = ",")),col = nus + 2, lwd = 1)

x <- x[x > 0]plot(x, x, ylim = c(1e-18, 1e11), log = "y", ylab = "", type = "n",

main = "Bessel Functions K_nu(x)")for(nu in nus) lines(x, besselK(x, nu = nu), col = nu + 2)legend(0, 1e-5, legend=paste("nu=", nus), col = nus + 2, lwd = 1)

yl <- c(-1.6, .6)plot(x, x, ylim = yl, ylab = "", type = "n",

main = "Bessel Functions Y_nu(x)")for(nu in nus){

xx <- x[x > .6*nu]lines(xx, besselY(xx, nu=nu), col = nu+2)

}legend(25, -.5, legend = paste("nu=", nus), col = nus+2, lwd = 1)

## ベッセル Y 中の負の nu -- 長い間にはインチキになるcurve(besselY(x, -0.1), 0, 10, ylim = c(-3,1), ylab = "")for(nu in c(seq(-0.2, -2, by = -0.1)))

curve(besselY(x, nu), add = TRUE)title(expression(besselY(x, nu) * " " *

{nu == list(-0.1, -0.2, ..., -2)}))

bindenv Binding and Environment Locking, Active Bindings

Page 56: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

56 bindenv

Description

これらの関数は環境の調整と環境中の結合のための実験的インタフェイスである.環境と並んで個々の結合をロックすることや,変数を関数にリンクすることを可能にする.

Usage

lockEnvironment(env, bindings = FALSE)environmentIsLocked(env)lockBinding(sym, env)unlockBinding(sym, env)bindingIsLocked(sym, env)

makeActiveBinding(sym, fun, env)bindingIsActive(sym, env)

Arguments

env 環境.

bindings 結合がロックされるべきかどうかを指示する論理値.

sym 名前オブジェクトまたは文字列.

fun 引数がゼロか一個の関数.

Details

関数 lockEnvironmentはその環境引数をロックする.環境は普通の環境(基礎でない)でなければならない.(基礎環境と名前空間のロックは後でサポートされるかもしれない.)環境のロックは環境からの変数の結合を加えたり取り除いたりすることを妨げる.変数の値の変更は結合がロックされていない限り依然として可能である.名前空間を持つパッケージの名前空間環境は読み込まれるときにロックされる.

lockBindingは特定の環境中の個々の結合をロックする.ロックされた結合の値は変更できない.環境がロックされていない限り,ロックされた結合を環境から取り除くことは可能である.

makeActiveBindingは funを環境 env中にインストールし,引数なしの funの sym呼び出しの値を得たり, sym呼び出しに割り当てられる値である引数が一つの funを割り当てたりする.これはR変数にリンクされた C変数やデータベースにリンクされた変数のような物事の実装を可能にする.そして setRefClassの実装に使うことが出来る.これはまた幾つかのシステムの大局のスレッドに対して安全なバージョンを作るのに有用かもしれない.

Value

bindingIsLocked と environmentIsLocked は長さ1の論理値を返す.他の関数は NULL を不可視で返す.

Author(s)

Luke Tierney

Page 57: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

bitwise 57

Examples

# 環境をロックするe <- new.env()assign("x", 1, envir = e)get("x", envir = e)lockEnvironment(e)get("x", envir = e)assign("x", 2, envir = e)try(assign("y", 2, envir = e)) # エラー

# 結合をロックするe <- new.env()assign("x", 1, envir = e)get("x", envir = e)lockBinding("x", e)try(assign("x", 2, envir = e)) # エラーunlockBinding("x", e)assign("x", 2, envir = e)get("x", envir = e)

# アクティブな結合f <- local( {

x <- 1function(v) {

if (missing(v))cat("get\n")

else {cat("set\n")x <<- v

}x

}})makeActiveBinding("fred", f, .GlobalEnv)bindingIsActive("fred", .GlobalEnv)fredfred <- 2fred

bitwise Bitwise Logical Operations

Description

要素をビットの集まりとみなした整数ベクトルへの論理演算.

Usage

bitwNot(a)bitwAnd(a, b)bitwOr(a, b)bitwXor(a, b)

bitwShiftL(a, n)bitwShiftR(a, n)

Page 58: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

58 body

Arguments

a, b 整数ベクトル;数値ベクトルは整数ベクトルに変換される.

n 値が最大31の非負整数ベクトル.

Details

整数ベクトルの各要素は32ビットを持つ.

対毎の演算結果は整数 NAになるかもしれない.

シフト操作は値が符号なし整数と仮定して行われる.

Value

長さが引数のそれの大きい方である整数ベクトル.もしくは一方が長さがゼロなら長さはゼロになる.

出力要素は,もし入力が NA (強変換後に)か不正なシフトであれば, NAになる.

See Also

論理演算 !, &, |, xor.

クラス "octmode" と "hexmnode" の標準的論理演算の実装はこれらの関数に基づいている.

パッケージ bitOpsは数値ベクトルに対する類似の関数を持ち, 231 やそれ以上の整数の処理法が異なる.

Examples

bitwAnd(15L, 7L)bitwOr(15L, 7L)bitwXor(15L, 7L)bitwXor(-1L, 1L)

bitwShiftR(-1, 1:31) # 2^32-1 = 4294967295 のシフト

body Access to and Manipulation of the Body of a Function

Description

関数の本体を得る,設定する.

Usage

body(fun = sys.function(sys.parent()))body(fun, envir = environment(fun)) <- value

Arguments

fun 関数オブジェクト,もしくは‘詳細’を見よ.

envir その中に関数が定義されるべき環境.

value オブジェクトで,普通言語オブジェクト: ‘値’の節を見よ.

Page 59: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

bquote 59

Details

最初の形式では funは操作されるべき関数の名前を与える文字列で良い.これは親環境から探される.もしこれが指定されないと bodyを呼び出している関数が使われる.

最も単純なものを除けば本体は波括弧で括られた表現式,つまり {の呼び出しである:そうした呼び出しの作り方については ‘例’の節を見よ.

Value

bodyは指定された関数の本体を返す.これは通常言語オブジェクトであり,最もしばしば {の呼び出しであるが,関数の返り値であるオブジェクト(例えば pi)でも良い.

置き換え形は関数の本体を右側のオブジェクトに設定し, (可能性として)関数の環境をリセットする.もし valueがクラス "expression"ならば,最初の要素が本体として使われる:他のすべての要素は無視され,警告が出る.

See Also

alist, args, function.

Examples

body(body)f <- function(x) x^5body(f) <- quote(5^x)## もしくは同じことだが body(f) <- expression(5^x)f(3) # = 125body(f)

## 複数表現式をもつ本体を作るe <- expression(y <- x^2, return(y)) # or a listbody(f) <- as.call(c(as.name("{"), e))ff(8)

bquote Partial substitution in expressions

Description

LISPのバックコートマクロの類似物.bquoteはその引数を引用化するが, .()中にラップされた項が指定された環境 whereで評価されることが異なる.

Usage

bquote(expr, where = parent.frame())

Arguments

expr 言語オブジェクト.

where 環境.

Page 60: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

60 browser

Value

言語オブジェクト.

See Also

quote, substitute

Examples

require(graphics)

a <- 2

bquote(a == a)quote(a == a)

bquote(a == .(a))substitute(a == A, list(A = a))

plot(1:10, a*(1:10), main = bquote(a == .(a)))

## 関数の既定引数を設定するdefault <- 1bquote( function(x, y = .(default)) x+y )

browser Environment Browser

Description

表現式の実行を中断し browserが呼びだされた環境の吟味を許す.

Usage

browser(text = "", condition = NULL, expr = TRUE, skipCalls = 0L)

Arguments

text 一旦ブラウザが起動されると探されるテキスト文字列.

condition 一旦ブラウザが起動されると探される条件.

expr 表現式.もしそれが TRUEと評価されるとデバッガが起動される.様の彼場制御は直接元に戻される.

skipCalls 呼び出し文脈を報告する際幾つ前の呼び出しをスキップするか.

Details

browserの呼び出しは関数の本体中に入れられる.そこに至るとこれは現在の表現式の実行の休止を引き起こし Rのインタプリタへのアクセスを可能にする.

引数 textと conditionの目的は,ここで補助プログラム(例えば外部デバッガ)が指定した値を挿入することを許すことであり,そうするとブラウザへの特定の呼び出し(恐らくソースファイル中のその位置)が識別可能になり特別な処理が実行できるようになる.値は browserTextと browserConditionの呼び出しで探すことが出来る.

Page 61: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

browser 61

引数 exprの目的は条件付きデバッグのような見せかけを可能にすることである.これは見せかけである.なぜなら,実行は常にブラウザの呼び出しで休止されるが制御は exprの評価が TRUEになった時だけ下で述べる評価器に渡されるからである.殆どのケースでは呼び出しプログラム中で if文を使うほうがより効率的になるであろうが,幾つかのケースではこの引数のほうがより簡単になる.

引数 skipCallsは呼び出し browser()が別のデバッグ用関数と入れ子になっているときに使うべきである:これはその位置を報告するため呼び出しスタックを更に調べる.

ブラウザのプロンプトに対しユーザは改行に続き命令や R表現式を入力できる.そうした命令としては

c ブラウザを抜け,次の文の実行を続ける.

cont cの同義語.

f 現在のループや関数の実行を終了

help この命令リストをプリント

n 関数呼び出しを跨ぎ次の文を評価, browser呼び出しで中断されたバイトコンパイルされた関数に対しては, nは cに等しい.

s 関数呼び出しに踏み込み次の文を評価する.再び,バイトコンパイルされた関数に対しては sは cに等しい.

where すべてのアクティブな関数呼び出しのスタックのトレースをプリントする.

Q ブラウザと現在の評価を抜けトップレベルのプロンプトに復帰する.

空白行を除き,先頭と末尾の空白は無視される.空白行の処理は "browserNLdisabled"オプションに依存する;もしこれが TRUEなら空白行は無視される.さもなければ空白行は n (もしそれが直近に使われたならば s)と同じになる.

ブラウザのプロンプトに入力された他の全ては呼び出し環境中で評価される R表現式と解釈される:特にオブジェクトをタイプすればプリントされ,そして ls()は呼び出しフレーム中のオブジェクトをリストする. (もし nのような名前を持つオブジェクトを眺めたければそれを明示的にプリントする.)

逆構文解析された呼び出しに対するプリントされる行数は設定 options(deparse.max.lines)により制限できる.

ブラウザのプロンプトは Browse[n]>のような形式になる:ここで n は ‘ブラウザのレベル’を示す.ブラウザはブラウジング中に呼び出すことができ(そしてしばしば debugの使用中に),そして各再帰的な呼び出しは番号を増加させる. (実際の番号は文脈スタック上の ‘文脈’の数である:これは普通ブラウジングの外部レベルでは 2で,debugger中のダンプを吟味中は 1である.)

これはプリミティブな関数であるが,標準的な方法で引数のマッチングを行う.

References

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

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.

See Also

debug,そしてエラー時のスタックに対しては traceback,テキストと条件を調べるにはbrowserText.

Page 62: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

62 browserText

browserText Functions to Retrieve Values Supplied by Calls to the Browser

Description

ブラウザの呼び出しはテキスト引数や条件引数を与えることで文脈を提供できる.これらの関数はこの引数のいずれかを探すのに使うことができる.

Usage

browserText(n = 1)browserCondition(n = 1)browserSetDebug(n = 1)

Arguments

n スキップする文脈の数,負であってはならない.

Details

browserへの各呼び出しはテキスト文字列化条件を与える.関数 browserTextと browserConditionはこれらの値を見つける方法を提供する.ある時点でアクティブな複数のブラウザの文脈があり得るので,異なった文脈からの値の探索がサポートされている.最奥(最も最近に開始された)のブラウザの文脈は番号1を持つ:他の文脈は順番に番号付けられる.

browserSetDebugは呼び出し関数の一つからブラウザを起動する機構を提供する.呼び出しスタックに対するより完全な詳細については sys.frameを見よ. browserSetDebugを使うには,ある呼び出し関数を選択し,それが呼び出しスタック中の位置を決定し,そしてその値を nに設定して browserSetDebugを呼び出す.そうすると,ブラウザのプロンプトに cとタイプすれば評価が継続し,ブラウザに入り込む他の呼び出しが無いか他の中断がなければ,評価が指定のクロージャに復帰するやいなや制御は再び停止する.これは gdbの up機能や,他のデバッガの "step out"機能に類似している.

Value

browserTextはテキストを返す.一方 browserConditionは指定されたブラウザのコンテキストからの条件を返す.

browserSetDebugは NULLを不可視で返す.

Note

ブラウザのコンテキストの集合を更に問い合わせできたら興味深いかもしれない.この機能は将来付け加えられるかもしれない.

Author(s)

R. Gentleman

See Also

browser

Page 63: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

builtins 63

builtins Returns the Names of All Built-in Objects

Description

すべての組み込みオブジェクトの名前のリストを返す.これらは Rインタプリタのシンボルテーブルから直接に取得される.

Usage

builtins(internal = FALSE)

Arguments

internal 論理値で,‘internal’関数だけを取り上げるかどうかを指示する(これは.Internal経由で呼び出せる).

Details

builtins() はシンボルテーブル中のオブジェクトのソートされていないリストを返す,つまり基本環境中のすべてのオブジェクトである.これらは組み込みオブジェクトに基本パッケージが読み込まれた後に追加されたものを加えたものである.ls(baseenv(), all = TRUE)の方がより混乱が無い.

builtins(TRUE)は内部関数の名前のソートされていないリストを返す.つまりリスト中の foo は .Internal(foo(args ...)) でアクセスできる.

Value

文字列ベクトル.

by Apply a Function to a Data Frame Split by Factors

Description

関数 byはデータフレームに適用された tapplyのためのオブジェクト指向のラッパである.

Usage

by(data, INDICES, FUN, ..., simplify = TRUE)

Arguments

data Rオブジェクト.普通データフレームで行列もあり得る.

INDICES 因子もしくは因子のリストで,各々の長さは nrow(data).

FUN dataの部分集合(普通データフレーム)に適用される関数.

... FUNへのその他の引数.

simplify 論理値:tapplyを見よ.

Page 64: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

64 c

Details

一つのデータフレムが一つ以上の因子の値で行に沿って副データフレームに分割され,FUNが順に各副データフレームに適用される.

既定手法に対しては,次元を持つオブジェクト(例えば行列)はデータフレームに強制変換され,データフレームのメソッドが適用される.他のオブジェクトもデータフレームに強制変換されるが,FUNは個別にデータフレームの各列(の部分集合)に適用される.

Value

クラス "by"のオブジェクトで,各部分集合に対する結果を与える.これは simplifyが偽ならば常にリストで,さもなければ配列である(tapplyを見よ).

See Also

tapply, simplify2array. aveもまた関数をブロック毎に適用する.

Examples

require(stats)by(warpbreaks[, 1:2], warpbreaks[,"tension"], summary)by(warpbreaks[, 1], warpbreaks[, -1], summary)by(warpbreaks, warpbreaks[,"tension"],

function(x) lm(breaks ~ wool, data = x))

## 係数をグループ毎に取り出したいとするtmp <- with(warpbreaks,

by(warpbreaks, tension,function(x) lm(breaks ~ wool, data = x)))

sapply(tmp, coef)

c Combine Values into a Vector or List

Description

これはその引数を連結する総称的関数である.

既定メソッドはその引数を連結してベクトルを作る.すべての引数は同一の型に強制変換され,それが結果の型になる.そして名前以外のすべての属性が取り除かれる.

Usage

c(..., recursive = FALSE)

Arguments

... 連結されるオブジェクト.

recursive 論理値.もし recursive = TRUEならば関数は再帰的にリスト(そして対リスト)を下りそれらの要素すべてをベクトルに連結する.

Page 65: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

c 65

Details

出力の型は優先順位 NULL < raw < logical < integer < double < complex < character < list <expression で最高位の型になる.対リストはリストとして扱われるが,非ベクトル成分(名前や呼び出し)は一成分のリストとして扱われ, recursive = TRUEであっても非リスト化できない.

cは時折その名前以外の属性を取り除くという副作用のために使われる.例えば配列をベクトルにする良うな場合である. as.vectorはこれを行うより直感的な方法であるが,同時に名前も取り去る.既定以外のメソッドはこれを行うことを要求されないことも注意する (そしてこれらはほとんど確実にクラス属性を保存する).

これはプリミティブな関数である.

Value

NULL,表現式,または適当なモードのベクトル. (引数がなければ値は NULLである.)

S4メソッド

この関数は S4総称的であるが,引数リスト (x, ..., sive = FALSE)を持つ.

References

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

See Also

属性のないベクトルを作る unlistと as.vector.

Examples

c(1,7:9)c(1:5, 10.5, "next")

## 属性を取り除くために一つの引数で使用x <- 1:4names(x) <- letters[1:4]xc(x) # 名前を持つas.vector(x) # 名前無しdim(x) <- c(2,2)xc(x)as.vector(x)

## リストに付加:ll <- list(A = 1, c = "C")## 使用しないことc(ll, d = 1:3) # これは == c(ll, as.list(c(d = 1:3))## しかしむしろc(ll, d = list(1:3)) # c() は二つのリストを連結する

c(list(A = c(B = 1)), recursive = TRUE)

c(options(), recursive = TRUE)c(list(A = c(B = 1, C = 2), B = c(E = 7)), recursive = TRUE)

Page 66: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

66 call

call Function Calls

Description

モード "call"のオブジェクトを作る,検査する.

Usage

call(name, ...)is.call(x)as.call(x)

Arguments

name 呼び出される関数の名前を与える空でない文字列.

... 呼び出しの一部分となるべき引数.

x 任意の Rオブジェクト.

Details

callは未評価の関数呼び出しを返す.つまり,与えられた引数に適用された名前のついた関数と未評価の表現式である (nameは呼び出される関数の名前を与える引用可された文字列である必要がある).呼び出しは未評価であるが引数 ... は評価されることを注意せよ.

callはプリミティブであり,最初の引数は nameで残りの引数は構成された呼び出しの引数とされる:もし最初の引数が名前を持てば,名前は部分的に nameにマッチされる.

is.callは xが呼び出しかどうかを判断するのに使われる (つまり,モード "call"かどうか).

モード "list"のオブジェクトはモード "call"に強制変換できる.リストの最初の要素が呼び出しの関数部分になるので,関数であるか関数の名前であるべきである(シンボルとして;引用化された文字列は不可).

これら三つはすべてプリミティブな関数である.

Warning

callは .Internalや他の非API呼び出しに関する制約を逃れることを試みることに使われるべきではない.

References

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

See Also

関数を名前と引数リストで呼び出すには do.call;関数の再帰的呼び出しには Recall;更に is.language, expression, function.

Page 67: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

callCC 67

Examples

is.call(call) #-> FALSE: 関数は呼び出しではない

##引数 10.5 で round への呼び出しを設定するcl <- call("round", 10.5)is.call(cl) # TRUEcl## そうした呼び出しはまた評価できる.eval(cl) # [1] 10

A <- 10.5call("round", A) # round(10.5)call("round", quote(A)) # round(A)f <- "round"call(f, quote(A)) # round(A)## もし関数を提供したければ as.call か類似物を使う必要があるf <- round## Not run: call(f, quote(A)) # エラー:最初の引数は文字列でなければならない(g <- as.call(list(f, quote(A))))eval(g)## 別法,しかし明快さは劣るg <- list(f, quote(A))mode(g) <- "call"geval(g)## do.call のヘルプ中の例もよ

callCC Call With Current Continuation

Description

現在の実行継続に対する Schemeの呼び出しの downward-only版.

Usage

callCC(fun)

Arguments

fun 引数が一つの関数で,終了手続き.

Details

callCCは計算の早期終了に対して有用な非局在的終了機構を提供する.callCCは引数が一つの終了関数 funを呼び出す.終了関数は予期される返り値である一つの引数を持つ.もし funの本体が終了関数を呼びだせば callCCへの呼び出しは終了関数に与えられた値を callCCが返す値として直ちに戻る.

Author(s)

Luke Tierney

Page 68: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

68 CallExternal

Examples

# 以下はすべて値 1 を返すcallCC(function(k) 1)callCC(function(k) k(1))callCC(function(k) {k(1); 2})callCC(function(k) repeat k(1))

CallExternal Modern Interfaces to C/C++ code

Description

Rに読み込まれているコンパイル済み C/C++コードへ Rオブジェクトを引き渡す関数.

Usage

.Call(.NAME, ..., PACKAGE).External(.NAME, ..., PACKAGE)

Arguments

.NAME C関数の名前を表す文字列,もしくはそれらを参照するクラス "NativeSymbolInfo","RegisteredNativeSymbol"または "NativeSymbol"のオブジェクト.

... コンパイルされたコードへ引き渡される引数. .Call に対しては最大65.

PACKAGE もし与えられれば,文字列 .NAMEの探索をこの引数で与えられる DLLに制限する (加えて通常の拡張子 ‘.so’, ‘.dll’, . . . ).この引数は ... の後に置かれているため,その名前は省略できない.

これはパッケージに対する安全性を加えることを意図している.この引数使うことで他のどのパッケージもそれらの外部シンボルが上書きされ無いことが保証され,同時に探索を迅速にする (‘Note’を見よ).

Details

これらの関数は内部 Rオブジェクトを使用するコンパイル済みコードを呼び出すのに使われる.引数を Rオブジェクトの系列としてコードに引き渡す.慣例的な Cの呼び出しを用いており,従って C++コードに対しても使うことが出来る.

これらの関数と共に使うコードをどのように書くかについては,マニュアル ‘Writing RExtensions’の章 ‘System and foreign language interfaces’を見よ.これらは引数を Cコードに引き渡す仕方に関して異なる. .Externalは可変個数の引数を許す.

これらの関数は primitiveであり,.NAMEは常に与えられる最初の引数(名前があってはならない)と照合される.明快さのために,... に引き渡される引数中の名前には .NAMEに部分的に一致するものを使わない.

Value

コンパイル済みコード中で構成された Rオブジェクト.

Page 69: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

capabilities 69

外部コードに対するヘッダーファイル

これらの関数とともに使用するコードを書くためには ‘Rinternals.h’と ‘Rdefines.h’中のマクロの双方もしくはどちらかで定義された Rの内部構造を使う必要がある.

Note

もしこれらの関数の一つを頻繁に使うのなら, PACKAGEを使う(単一の DLLへ検索を制限するため)か,もしくは .NAMEをネイティブのシンボルオブジェクトの一つとして引き渡す.シンボルの検索は,特に多くの名前空間が読み込まれているとき,時間がかかる.

Rにリンクされているシンボルは PACKAGE = "base"を見よ.これを自分自身のコード中で使ってはならない:そうしたシンボルは APIの一部ではなく,警告なしに変更される可能性がある.

PACKAGE = ""はかっては可能であった(がドキュメント化されていなかった): 今はエラーになる.

References

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer. (.Call.)

See Also

dyn.load, .C, .Fortran.

The ‘Writing R Extensions’ manual.

capabilities Report Capabilities of this Build of R

Description

この Rの構築のコンパイル時のオプション特性についてのレポート.

Usage

capabilities(what = NULL)

Arguments

what 文字列もしくは NULLで,必要な成分を指定する. NULLは全て必要を意味する.

Value

名前付きの論理値ベクトル.現在の成分は

jpeg 関数 jpegは機能しているか?

png 関数 pngは機能しているか?

tiff 関数 tiffは機能しているか?

Page 70: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

70 capabilities

tcltk パッケージ tcltkはは機能しているか?Unixの場合,Tkを利用可能にするためにはほとんど常に "X11"が利用可能なことが必要になる.

X11 (Unix の場合) X11 グラフィックスデバイスと X11ベースのデータエディタが利用可能か?これはまだ読み込まれていなければ X11モジュールを読み込む.そして X11デバイスが既に使われていない限り既定のディスプレイが接続しているかどうかをチェックする.

aqua (Unixの場合)関数 quartzは機能しているか?ある種の OS Xの構築上でだけ,Rの CRANバイナリディストリビューションを含む.

これは .Platform$GUI == "AQUA"とは異なることを注意する.後者はMac R.app GUIコンソールを使っている時だけ真となる.

X11 (Windowsの場合)常に FALSE.

aqua (Windowsの場合) OS X上を除き FALSE.

http/ftp url と download.file に対する内部メソッドは ‘http://’ and ‘ftp://’URLをサポートしているか?

sockets make.socketと関連関数が利用できるか?

libxml libxmlを Rのイベントループと統合するためのサポートがあるか?

fifo FIFOコネクションはサポートされているか?

cledit 現在の Rセッションでコマンドライン編集が利用できるか?これは非対話的なセッションでは偽である.

(Unix の場合) もし readline のサポートがコンパイルされており Rが起動された時オプション ‘--no-readline’ が使用されていなければ,これはコマンドラインインタフェイスに対して真になる. (もし‘--interactive’が使用されれば,コマンドライン編集は実際は利用できないかもしれない.)

iconv iconv による国際化転換がサポートされているか? 現在の R では常に真.

NLS 自然言語サポートがあるか(メッセージの翻訳のため)?

profmem メモリプロファイルのためのサポートがあるか? tracememを見よ.

cairo svg, cairo_pdfそして cairo_psデバイス,また (Unixの場合) X11中のtype = "cairo", bmp, jpeg, png,そして tiffデバイスのサポートがあるか?

ICU 文章照合用の ICU が利用できるか? Comparison と icuSetCollate のヘルプを見よ:これは Cロケールに対しては決して使われない.

long.double この構築は doubleより長い Cの long double型を使っているか?ある種のプラットフォームはそうした型を持たず,他ではその使用はコンフィギュアのオプション ‘--disable-long-double’で抑制されている.保証はできないが,もしあれば long doubleは少なくとも ISO/IEC 6055980ビット‘拡張精度’書式と同等の範囲と精度を持つと仮定するのは合理的である.

libcurl この構築では libcurlが利用できるか?これは関数 curlGetHeadersと,オプションで download.fileと urlにより使われる.

Page 71: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

cat 71

OS Xユーザへのノート

機能 "jpeg", "png"そして "tiff"はこれらのデバイスの X11ベースのバージョンを参照する.もし capabilities("aqua")が真ならば,type = "quartz"を持つこれらのデバイスが利用可能であり,out-of-the-boxが既定のタイプになる.従って,例えば tiffデバイスは既定値が未変更なら capabilities("aqua") || capabilities("tiff")の時利用可能になる.

See Also

Rの外部機能であるが R関数が利用する機能の利用可能性については (そこにあるリンクとともに).Platformと extSoftVersion.

Examples

capabilities()

if(!capabilities("http/ftp"))warning("internal download.file() method is not available")

## 'connections' に対する例も見よ.

cat Concatenate and Print

Description

表現を連結しオブジェクトを出力する.catは printよりもかなり変換が少ない.

Usage

cat(... , file = "", sep = " ", fill = FALSE, labels = NULL,append = FALSE)

Arguments

... Rオブジェクト(許されるオブジェクトの型については ‘詳細’を見よ).file コネクション,またはそこへプリントすべきファイルの名前である文

字列.もし "" (既定)なら catは標準出力コネクション, sinkでリダイレクトされ無い限りコンソール,にプリントする.

(Unixなら)もしこれが "|cmd"なら出力はパイプコネクションをオープンし,cmdで与えられた命令にパイプされる.

sep 各要素の後に付加される文字列のベクトル.

fill 出力を連続する行に分割する仕方を制御する論理値または(正の)数値.もし FALSE (既定)ならば,新行は "\n"が明確にプリントされた時だけ作られる.さもなければ出力は,fillが TRUEならばオプション widthに等しい幅で,fillが数値ならばその数値で,行に分割される.正でない fill値は無視され警告が出る.

labels プリントされる行に対するラベルの文字列.もし fillが FALSEならば無視される.

append 論理値.引数 fileがファイルの名前の時だけ (そしてコネクションや"|cmd"でない時だけ)使われる.もし TRUEなら出力は fileに付加される;さもなければ fileの中身を上書きする.

Page 72: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

72 cat

Details

catはユーザ定義の関数中で出力を行うのに便利である.引数は文字列に変換され,それらを一つの文字列に連結し,与えられた sep = 文字を各要素に付加し,そしてそれらを出力する.

‘"\n"’によって明示的に要求されるか,引数 fillが TRUEか数値でない限り改行はされない.

もし fileがコネクションで書き込みのためにオープンされていれば,それはその現在の位置から書き込まれる.もしオープンされていなければ呼び出しの間中モード "wt"でオープンされ,それから閉じられる.

現在原子的ベクトルと名前,そして NULLや他の長さゼロのオブジェクト (これらは何も出力しない)が処理される.文字列は‘そのまま’で出力される. (一方 print.defaultはプリント不可な文字とバックスラッシュをエスケープする.エンコードされた文字列 catで出力したければ encodeStringを使う.)他の型の Rのオブジェクトは catに引き渡す前に変換(例えば as.characterや formatを使い)されなければならない.これは因子を含み,整数ベクトルとして出力される.

catは数値/複素数値の要素を printと同様に(Sの仲間のような as.character風ではなく)出力するので,options, "digits"そして "scipen"が関係する.しかしながら,これはすべての要素に対して同じ欄を使うのではなく,各要素に対して必要な最小の欄幅を使う.

Value

無い(不可視の NULL).

Note

もし sepの要素が新行文字を含んでいたら,それは分離記号ではなく終端子のベクトルとして扱われ,一つの要素はすべてのベクトル要素の後と最後の新行の後に出力される.項目は必要に応じてリサイクルされる.

References

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

See Also

文字列に連結する print, formatと paste.

Examples

iter <- stats::rpois(1, lambda = 10)## 情報メッセージをプリントするcat("iteration = ", iter <- iter + 1, "\n")

## 'fill' とラベル行:cat(paste(letters, 100* 1:26), fill = TRUE, labels = paste0("{", 1:10, "}:"))

Page 73: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

cbind 73

cbind Combine R Objects by Rows or Columns

Description

ベクトル,行列又はデータフレームの系列を引数として取り,それぞれ列又は行として結合する.これらは他の Rクラスに対するメソッドを持つ総称的関数である.

Usage

cbind(..., deparse.level = 1)rbind(..., deparse.level = 1)## S3 method for class 'data.frame'rbind(..., deparse.level = 1,make.row.names = TRUE,stringsAsFactors = default.stringsAsFactors())

Arguments

... (一般化)ベクトル又は行列.これらは名前付き引数として与えることが出来る.他の Rオブジェクトは適当に変換されるか S4メソッドが使われるかもしれない: ‘詳細’節と‘値’節を見よ. (cbindの "data.frame"メソッドについては stringsAsFactorsのような) data.frameへの追加引数があり得る.

deparse.level 非行列風引数(既定メソッドに対して)の場合にラベルの後世を制御する整数:deparse.level = 0はラベルを構成しない;既定,deparse.level = 1 or 2は引数名からラベルを構成する,下の‘値’節を見よ.

make.row.names (データフレームメソッドに対してだけ:)引数からユニークで適正なrow.namesを後世すべきかどうかを指示する論理値.

stringsAsFactors

logical, passed to ‘as.data.frame’; only has an effect when the ‘...’ argu-ments contain a (non-‘data.frame’)‘character’.

Details

関数 cbindと rbindは S3総称的で,データフレームに対するメソッドを持つ.少なくともひとつの引数がデータフレームで残りがベクトルデータフレームならばデータフレームメソッドが使われる.他のメソッドもあり得る;特に時系列用がある.使われるメソッドがどのように選択されるかについては‘選択適用’節を見よ.もし幾つかの引数が S4クラス,つまり isS4(.) が真,ならば S4メソッドがまた探され,パッケージ methodsからの隠し cbind / rbind 関数が呼び出されるかもしれない.これらは順に cbind2 かrbind2の上に構築されている.その場合,既定メソッドに習い deparse.levelに従う.

既定メソッドでは,すべてのベクトル/行列は原子的(vectorを見よ)かリストでなければならない.表現式は許されない.言語オブジェクト(公式や呼び出し)そして対リストはリストに強制変換される:他のオブジェクト(名前や外部ポインターのような)は結果リストの要素として含められる.入力が持つ任意のクラスは捨て去られているかもしれない (特に因子はその外部コードで置き換えられる).

Page 74: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

74 cbind

もし複数の行列引数があれば,それらはすべて同じ数の列(又は行)を持たねばならず,これが結果の列(又は行)数になる.もしすべての引数がベクトルならば,結果の列(行)数は最長ベクトルの長さになる.短い引数中の値はこの長さが満足されるまでリサイクル使用される (もし部分的にリサイクルされれば警告が出る).

もし引数に行列とベクトルが混在すれば,結果の列(行)数は行列引数の列(行)数で決まる.すべてのベクトルはこの長さになるようにリサイクルされるか,部分使用される.

Sとの互換性のため,cbind (rbind)に対しては,長さゼロの(NULLを含む)は結果がゼロ個の行(列)を持たない限り無視される. (行・列数ゼロの行列は S3では存在せず,Rでは無視されない.)

行列は64ビットシステムでも列と行数が 231 以下に制限される.従って入力ベクトルも同じ長さの制限を持つ: R 3.2.0からそれ以上の要素を持つ行列が許されるようになった(しかし行と列数の制限を満たさなければならない).

Value

既定メソッドに対しては, ... 引数を列毎か行毎に連結した行列. (例外: もし入力が全くないか,すべての入力が NULLなら,値は NULL.)

行列の結果の型は優先度 raw < logical < integer < double < complex < character < listで最高の入力の型から決まる.

cbind (rbind)に対しては列(行)名は引数が行列風なら引数の colnames (rownames)から取られる.さもなければ引数の名前か,それが無く deparse.level > 0ならば与えられた表現式を逆構文解析して決められる(deparse.level = 1に対してはそれが意味のある名前を与えるときだけ(‘シンボル’, is.symbolを見よ)).

cbindに対しては行名は適当な名前を持つ最初の引数から取られる:行列に対しては行名,又は結果の行数が長さであるベクトルに対する名前.

rbindに対しては列名は適当な名前を持つ最初の引数から取られる:行列に対しては列名,又は結果の列数が長さであるベクトルに対する名前.

データフレームメソッド

cbindのデータフレームメソッドは単に data.frame(..., check.names = FALSE)に対するラッパである.これはそれが行列の列を分解しデータフレーム引数にすることを意味する.そして stringsAsFactors = FALSEが指定されない限り文字列の列は因子に変換される.

rbindのデータフレームメソッドは最初に列・行数がセロの引数を捨て去る. (その結果何も残らなければ,列を持つ最初の引数が,さもなければ行・列数が共にゼロのデータフレームを返す.)それから最初のデータフレームから列のクラスを取り,列を名前でマッチする (位置ではなく).因子は必要に応じてそれらの水準を (出会った因子の水準集合のレベルの順序で)拡大し,結果はすべての成分が順序因子の時,そしてその時だけ順序因子になる. (最後の点は S-PLUSと異なる.)旧式のカテゴリ (水準を持つ整数ベクトル)は因子に変換される.

選択適用

メソッドの選択適用は UseMethod()ではなく, C-内部的選択適用によりなされる.従って例えば rbind.defaultは不要である.

選択適用アルゴリズムはソースファイル(‘.../src/main/bind.c’)に以下のように記述されている

1. 各引数に対してクラス属性から可能なクラスのメンバーのリストを受け取る.

Page 75: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

cbind 75

2. 適用可能なメソッドがあるか各クラスを順に吟味する.

3. もし適用可能なメソッドが見つかれば,それが事前の引数に対して決定されたメソッドと同じかどうかを確認する.もし同一ならばそのまま進行し,さもなければ即座に既定コードに切り替える.

もし他のオブジェクトをデータフレームに結合したければ,最初にそれをデータフレームに変換する必要があるかもしれない. (このアルゴリズムはもしすべての引数がデータフレームかベクトルなら,データフレームメソッドを呼び出す結果になり得る.そしてこれは文字列ベクトルの因子への強制変換を招く.)

References

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

See Also

ベクトル(そしてリスト)をベクトルとして結合するには c,ベクトルと行列をデータフレームとして結合するには data.frame.

Examples

m <- cbind(1, 1:7) # '1' (= 短い方のベクトル)はリサイクルされるmm <- cbind(m, 8:14)[, c(1, 3, 2)] # 列を挿入mcbind(1:7, diag(3)) # ベクトルはサブセット -> 警告

cbind(0, rbind(1, 1:3))cbind(I = 0, X = rbind(a = 1, b = 1:3)) # ある名前を使うxx <- data.frame(I = rep(0,2))cbind(xx, X = rbind(a = 1, b = 1:3)) # 異なった命名

cbind(0, matrix(1, nrow = 0, ncol = 4)) #> 警告 (意味はある)dim(cbind(0, matrix(1, nrow = 2, ncol = 0))) #-> 2 x 1

## deparse.leveldd <- 10rbind(1:4, c = 2, "a++" = 10, dd, deparse.level = 0) # middle 2 rownamesrbind(1:4, c = 2, "a++" = 10, dd, deparse.level = 1) # 3 rownames (default)rbind(1:4, c = 2, "a++" = 10, dd, deparse.level = 2) # 4 rownames

## 簡単な列名:b0 <- gl(3,4, labels=letters[1:3])bf <- setNames(b0, paste0("o", seq_along(b0)))df <- data.frame(a = 1, B = b0, f = gl(4,3))df. <- data.frame(a = 1, B = bf, f = gl(4,3))new <- data.frame(a = 8, B ="B", f = "1")(df1 <- rbind(df , new))(df.1 <- rbind(df., new))stopifnot(identical(df1, rbind(df, new, make.row.names=FALSE)),

identical(df1, rbind(df., new, make.row.names=FALSE)))

Page 76: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

76 character

char.expand Expand a String with Respect to a Target Table

Description

その最初の引数にユニークにマッチするするものを二番目の引数の要素中から探す.もし見つかればその要素が返される;さもなければ三番目の引数で指定される行動を行う.

Usage

char.expand(input, target, nomatch = stop("no match"))

Arguments

input 拡張されるべき文字列.

target マッチが探されるべき値の文字列ベクトル.

nomatch 拡張が不可能なときに評価されるべき R表現式.

Details

この関数は関数引数に省略が許される時に特に有用であり,可能な値の目標デーブルに関してユニークに拡大される必要がある.

Value

長さ1の文字列ベクトルで targetの要素の一つ (nomatchがエラー無しと変更されない限り,そしてその時は長さがゼロの文字列であっても良い).

See Also

部分的な文字列のマッチングには charmatchと pmatch.

Examples

locPars <- c("mean", "median", "mode")char.expand("me", locPars, warning("Could not expand!"))char.expand("mo", locPars)

character Character Vectors

Description

型 "character"のオブジェクトを作る,検査する.

Usage

character(length = 0)as.character(x, ...)is.character(x)

Page 77: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

character 77

Arguments

length 希望の長さを指定する非負整数.倍精度実数は整数に変換される:引数の長さが1以外はエラーになる.

x 強制変換されたりテストされるオブジェクト.

... 他のメソッドに/から引き渡される追加引数.

Details

as.characterと is.characterは総称的である:オブジェクトの特定のクラスを処理するメソッドをを書くことが出来る, InternalMethodsを見よ.更に,as.characterに対して既定メソッドは as.vectorを呼び出すので,選択適用は最初 as.characterに対するもので,それから as.vectorに対するメソッドである.

as.characterは実数と複素数を有効桁数 15桁で表示する (技術的にはコンパイラの ISOC定数 DBL_DIGで,これは C99標準によれば IEC60559算術をサポートする計算機では15になる).これは結果のすべての数字が信頼できる(表現によるエラーの結果ではない)ことを保証するが,文字列への変換と逆変換は数値を変える可能性がある.もし数値を可能な最大の精度で文字列に変換したければ formatを使う.

Value

characterは指定された長さの文字列ベクトルを作る.ベクトルの要素はすべて ""に等しい.

as.characterはその引数を文字列型に強制変換しようと試みる; as.vectorと同じように名前を含む属性を剥ぎ取る.リストと対リスト(呼び出しのような言語オブジェクトを含む)に対しては,これは要素を個別に逆構文解析するが,長さが1の文字列ベクトルは最初の要素を取り出す.

is.characterはその引数が文字列型か否かで TRUEまたは FALSEを返す.

Note

as.characterは言語オブジェクト中の行を500文字で分割し,新行を挿入する.バージョン 2.15.0以前では行は切り詰められていた.

References

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

See Also

options: オプション scipenは数の変換に影響する.

文字列の結合と分割については paste, substrそして strsplit.文字列の翻訳と大・小文字の変換に対しては chartr.そして文字列のマッチングと代入については sub, grep等. help.search(keyword = "character") はより多くのリンクを与えることを注意する.

言語オブジェクトに対しては deparseは普通 as.characterよりも好ましい.

Page 78: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

78 charmatch

Examples

form <- y ~ a + b + cas.character(form) ## 長さ 3deparse(form) ## 入力と似る

a0 <- 11/999 # 循環小数(a1 <- as.character(a0))format(a0, digits = 16) # もう一つ桁を示すa2 <- as.numeric(a1)a2 - a0 # 普通約 -1e-17as.character(a2) # 普通 a1 と異なるprint(c(a0, a2), digits = 16)

charmatch Partial String Matching

Description

charmatchはその第一引数の要素に対して第二引数中からマッチするものを探す.

Usage

charmatch(x, table, nomatch = NA_integer_)

Arguments

x マッチすべき値:as.characterで文字列に変換される.ロングベクトルがサポートされている.

table マッチされるべき値:文字列に変換される.ロングベクトルはサポートされていない.

nomatch マッチしない位置で返されるべき(整数)値.

Details

正確なマッチングは部分的なマッチング(マッチされるべき値が目標の最初の部分に正確に一致するが,目標は更に長い)よりも好ましい.

もし正確なマッチングが一つだけか,正確なマッチが皆無で部分的なマッチングがひとつだけなら,マッチされた値の添字が返される;もし正確なマッチングが複数あるか,複数の部分マッチングがあれば 0が返され,マッチングが見つからなければ nomatchが返される.

NA値は文字列定数 "NA"と見做される.

Value

xと同じ長さの整数ベクトルで,マッチした table中の要素の添え字か,又は nomatch.

Author(s)

この関数は Terry Therneauによる C関数に基づく.

Page 79: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

chartr 79

See Also

pmatch, match.

文字列のより一般的なマッチング(regexp)については grepか regexpr.

Examples

charmatch("", "") # 1 を返すcharmatch("m", c("mean", "median", "mode")) # 0 を返すcharmatch("med", c("mean", "median", "mode")) # 2 を返す

chartr Character Translation and Casefolding

Description

文字列を文字列ベクトルに翻訳する.特に大文字を小文字に,小文字を大文字に変える.

Usage

chartr(old, new, x)tolower(x)toupper(x)casefold(x, upper = FALSE)

Arguments

x 文字列ベクトル,もしくは as.characterで文字列に変換できるオブジェクト.

old 翻訳されるべき文字を指定する文字列.もし長さ2以上の文字列ベクトルが与えられると,最初の要素が使われ警告が出る.

new 翻訳を指定する文字列.もし長さ2以上の文字列ベクトルが与えられると,最初の要素が使われ警告が出る.

upper 論理値: 大文字に変換するか小文字に変換するか?

Details

chartrは oldで指定された x中の各文字を newで指定された対応する文字に変換する.範囲は指示の中で newポートされるが,文字クラス繰り返し文字はそうではない.もしoldが newよりも多くの文字を持てばエラーシグナルが発生する;逆にもし少なければnewの後端の余分の文字は無視される.

tolower (toupper)は文字列ベクトル中の大(子)文字を小(大)文字に変える.アルファベットでない文字はそのままである.

casefoldは S-PLUSとの互換性のため提供されている tolowerと toupperのためのラッパである.

Page 80: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

80 chartr

Value

(可能な強制変換の) xと同じ長さと属性の文字列ベクトル.

もし対応する入力が宣言されたエンコーディングを持ちそして現在のロケールが Latin1か UTF-8 ならば,結果の要素は現在のロケールで宣言されたエンコーディングを持つ(Encodingを見よ).対応する入力が UTF-8で無い限り,結果は現在のロケールのエンコーディングを持つ.システムが Unicodeの幅広文字を持ちエンコーディングが UTF-8なら結果のエンコーディングは UTF-8である.

See Also

他の文字列中の挿入については subと gsub.

Examples

x <- "MiXeD cAsE 123"chartr("iXs", "why", x)chartr("a-cX", "D-Fw", x)tolower(x)toupper(x)

## "大小文字が混在する" 大文字化 - toupper(単語のすべての最初の文字) :

.simpleCap <- function(x) {s <- strsplit(x, " ")[[1]]paste(toupper(substring(s, 1, 1)), substring(s, 2),

sep = "", collapse = " ")}.simpleCap("the quick red fox jumps over the lazy brown dog")## -> [1] "The Quick Red Fox Jumps Over The Lazy Brown Dog"

## そしてより良く賢明なバージョン:capwords <- function(s, strict = FALSE) {

cap <- function(s) paste(toupper(substring(s, 1, 1)),{s <- substring(s, 2); if(strict) tolower(s) else s},

sep = "", collapse = " " )sapply(strsplit(s, split = " "), cap, USE.NAMES = !is.null(names(s)))

}capwords(c("using AIC for model selection"))## -> [1] "Using AIC For Model Selection"capwords(c("using AIC", "for MODEL selection"), strict = TRUE)## -> [1] "Using Aic" "For Model Selection"## ^^^ ^^^^^## 'bad' 'good'

## -- 非常に簡単な安全でない暗号化 --rot <- function(ch, k = 13) {

p0 <- function(...) paste(c(...), collapse = "")A <- c(letters, LETTERS, " '")I <- seq_len(k); chartr(p0(A), p0(c(A[-I], A[I])), ch)

}

pw <- "my secret pass phrase"(crypw <- rot(pw, 13)) #-> これを送ることが出来る

## そして ``解読'' :rot(crypw, 54 - 13) # -> オリジナル

Page 81: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

chkDots 81

stopifnot(identical(pw, rot(crypw, 54 - 13)))

chkDots Warn About Extraneous Arguments in the "..." of Its Caller

Description

Warn about extraneous arguments in the ... of its caller. A utility to be used e.g., in S3 methodswhich need a formal ... argument but do not make any use of it. This helps catching user errors incalling the function in question (which is the caller of chkDots().

Usage

chkDots(..., which.call = -1, allowed = character(0))

Arguments

... “the dots”, as passed from the caller.

which.call passed to sys.call(). A caller may use -2 if the message should mention itscaller.

allowed not yet implemented: character vector of named elements in ... which are“allowed” and hence not warned about.

Author(s)

Martin Maechler, first version outside base, June 2012.

See Also

warning, ....

Examples

seq.default ## <- you will see ' chkDots(...) '

seq(1,5, foo = "bar") # gives warning via chkDots()

## warning with more than one ...-entry:density.f <- function(x, ...) NextMethod("density")x <- density(structure(rnorm(10), class="f"), bar=TRUE, baz=TRUE)

Page 82: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

82 chol

chol The Choleski Decomposition

Description

実対称正定値正方行列のコレスキ分解を計算する.

Usage

chol(x, ...)

## Default S3 method:chol(x, pivot = FALSE, LINPACK = FALSE, tol = -1, ...)

Arguments

x メソッドが存在するオブジェクト.既定のメソッドは実(論理値)対称正定値正方行列に適用される.

... メソッドへ・から引き渡される引数.

pivot ピボット操作を使うべきか?

LINPACK 論理値.LINPACKを使うべきか(現在は無視される)?

tol pivot = TRUEに対して使う数値許容度.

Details

cholは総称的である:ここでの説明は既定のメソッド用である.

xの上三角部分だけが使われることを注意しよう.従って xが対称ならば R′R = x.もし pivot = FALSEで xが非負定値でなければエラーが起こる.もし xが半正定値(つまりゼロの固有値がある)ならば,数値的許容度が使われるため,やはりエラーが起こる.

もし pivot = TRUE ならば半正定値符号の x のコレスキ分解が計算できる.x のランクは attr(Q, "rank") として返され,数値的なエラーがあり得る.ピボットはattr(Q, "pivot") として返される.最早 t(Q) %*% Q は x 等しくない.しかしながらpivot <- attr(Q, "pivot")と oo <- order(pivot)とすれば, t(Q[, oo]) %*% Q[, oo]は xに等しく,または,同値であるが,t(Q) %*% Qは x[pivot, pivot]に等しくなる.例を見よ.

tolの値は LAPACKに渡される.負の許容値は既定の許容値(普通)nrow(x) * .Machine$double.neg.eps * max(diag(x)を選択する.アルゴリズムはピボットが tol以下になれば停止する.

基礎にある LAPACKコードからの不成功の結果は正のエラーコードを与えるエラーになる:これらは FORTRANコードの詳細な検討によってのみ解釈できる.

Value

コレスキ分解の上側三角因子,つまり R′R = xとなる行列 R (例を見よ).

もしピボット操作を使うと二つの追加属性 "pivot"と "rank"も返される.

Page 83: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

chol 83

警告

コードは対称性をチェックしない.

もし pivot = TRUEで xが非負定値でなければ,警告が出るが意味のない結果が生じる.従って xが構成から非負定値の時だけ pivot = TRUEを使うこと.

Source

これは LAPACKルーチン DPOTRFと DPSTRFへのインタフェイスである.

LAPACKは http://www.netlib.org/lapackから,そしてそのガイドは参考文献にある.

References

Anderson. E. and ten others (1999) LAPACK Users’ Guide. Third Edition. SIAM.Available on-line at http://www.netlib.org/lapack/lug/lapack_lug.html.

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

See Also

逆行列は chol2inv (ピボット操作無し),左辺が上三角行列の線形方程式を解くにはbacksolve.

関連する行列分解は qr, svd.

Examples

( m <- matrix(c(5,1,1,3),2,2) )( cm <- chol(m) )t(cm) %*% cm #-- = 'm'crossprod(cm) #-- = 'm'

# 半正定値行列ではx <- matrix(c(1:5, (1:5)^2), 5, 2)x <- cbind(x, x[, 1] + 3*x[, 2])colnames(x) <- letters[20:22]m <- crossprod(x)qr(m)$rank # そうなるべきように 2 になる

# chol() は数値的丸めに依存して失敗する可能性がある:# chol() は qr() と異なり許容度を使わない.try(chol(m))

(Q <- chol(m, pivot = TRUE))## これを次のように使うことが出来るpivot <- attr(Q, "pivot")crossprod(Q[, order(pivot)]) # m を復元

## 非正定値行列ならば( m <- matrix(c(5,-5,-5,3), 2, 2) )try(chol(m)) # 失敗(Q <- chol(m, pivot = TRUE)) # 警告crossprod(Q) # m と等しくない

Page 84: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

84 chol2inv

chol2inv Inverse from Choleski (or QR) Decomposition

Description

対称正定値正方行列の逆行列をそのコレスキ分解から求める.同じことだが (X ′X)−1 をX の QR分解の(R部分)から計算する.

Usage

chol2inv(x, size = NCOL(x), LINPACK = FALSE)

Arguments

x 行列.最初の size個の列の上三角部分は分解されるべき行列のコレスキ分解を含む.

size コレスキ分解を含む xの列数.

LINPACK 論理値.廃止され無視される(真の値に対する警告と共に).

Value

そのコレスキ分解が与えられた行列の逆行列.

基礎にある LAPACKコードからの不成功の結果は正のエラーコードを与えるエラーになる:これらは FORTRANコードの詳細な検討によってのみ解釈できる.

Source

これは LAPACKルーチン DPOTRIへのインタフェイスである. LAPACKは http://www.netlib.org/lapackにあり,そのガイドは参考文献にある.

References

Anderson. E. and ten others (1999) LAPACK Users’ Guide. Third Edition. SIAM.

http://www.netlib.org/lapack/lug/lapack_lug.htmlでオンラインで入手可能.

Dongarra, J. J., Bunch, J. R., Moler, C. B. and Stewart, G. W. (1978)LINPACK Users Guide. Philadelphia: SIAM Publications.

See Also

chol, solve.

Examples

cma <- chol(ma <- cbind(1, 1:3, c(1,3,7)))ma %*% chol2inv(cma)

Page 85: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

class 85

class Object Classes

Description

Rはオブジェクト指向スタイルのプログラミングに使える単純な総称的関数の機構を持つ.メソッドの選択適用は総称的関数の第一引数のクラスに基づいて行われる.

Usage

class(x)class(x) <- valueunclass(x)inherits(x, what, which = FALSE)

oldClass(x)oldClass(x) <- value

Arguments

x Rオブジェクトwhat, value クラスの名前である文字列ベクトル.valueはまた NULLであっても良

い.

which 返り値に影響する論理値:‘詳細’を見よ.

Details

ここではいわゆる “S3”クラス(とメソッド)を解説する. “S4”クラス(とメソッド)については下の ‘形式的クラス’を見よ.

多くの Rオブジェクトは class属性を持つ.これはオブジェクトがそこから継承するクラスの名前を与える文字列である.もしオブジェクトがクラス属性を持たなければ,それは暗黙のクラス "matrix", "array"もしくは mode(x)の結果を持つ(例外として整数ベクトルは暗黙のクラス "integer"を持つ).(関数 oldClassと oldClass<-は属性を得たり設定するが,直接行うことも出来る.)

総称的関数 funがクラス属性 c("first", "second")を持つオブジェクトに適用されるとき,システムは fun.firstという関数を探し,もしそれが見つかればそれを関数に適用する.もしそうした関数がなければ fun.secondという関数が試みられる.もしどのクラス名も適当な関数に該当しなければ関数 fun.defaultが使われる(もし存在すれば).もしクラス属性がなければ暗黙のクラス,それから既定メソッドがが試みられる.

関数 classはオブジェクトがそれから継承するクラスの名前をプリントする.対応してclass<-はオブジェクトがそれから継承するクラスを設定する.NULLを付値すればクラス属性は取り除かれる.

unclassはクラス属性を取り除いたその引数(のコピー)を返す. (これはコピーできないオブジェクトに対しては許されない,つまり環境と外部ポインターである.)

inheritsはその第一引数が what引数中で指示されたクラスのどれかを継承しているかどうかを示す.もし which が TRUE ならば what と同じ長さの整数ベクトルが返される.各要素は whatの要素とマッチングされた class(x)中の位置を示す;ゼロはマッチしないことを意味する.もし whichが FALSEなら,what中の名前のどれかがが classにマッチすれば TRUEが inheritsにより返される.

inheritsを除くすべてはプリミティブな関数である.

Page 86: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

86 col

形式的クラス

“S4” というニックネームを持つ追加の形式的クラス機構が既定で付属するパッケージmethodsから利用可能である.形式的クラスを持つオブジェクトに対しては,その名前は classによって長さ1の文字列として返され,メソッドの選択適用は最初の引数だけでなく複数の引数について行われ得る.しかしながら S3メソッド選択は S4クラスからのオブジェクトをそれらが S3クラス属性を持つかのように扱おうとする. inheritsも同様である.従って S3メソッドは S4クラスに対しても定義できる.詳細は ‘Classes’と‘Methods’のヘルプ頁を見よ.

置き換え版の関数はクラスを与えられた値に設定する.形式的定義を持つクラスに対してはクラスをこのようにして直接置き換えることは強く不推奨される.表現式as(object, value)がオブジェクトを特定のクラスに強制変換する方法である.

形式的クラスに対する inheritsの類似物は isである.二つの関数は一つの例外を除き矛盾なく動作する. S4クラスは正確なテストを持つ条件付き継承を持つことが出来る.この場合 isは条件をテストするが,inheritsはすべての条件付き上位クラスを無視する.

Note

関数 oldClassと oldClass<-は S-PLUS 5/6の同名の関数と同じように動作するが,しかし Rでは UseMethodは oldClassではなく class (幾つかの保管されたクラスと共に;リンクを見よ)が返すクラスについて選択適用を行う.しかしながらグループ総称的関数は効率性のため oldClassに基づき,内部総称的関数は is.objectが真であるようなオブジェクトに対して選択適用を行う.

Rのある種のバージョンでは,クラスを持つ長さゼロのベクトルを付値するとクラスが取り除かれ,その他ではエラーになる(しかしながら oldClassに対しては動作する).クラスを取り除くには NULLを付値するのがより明快である.

See Also

UseMethod, NextMethod, ‘group generic’, ‘internal generic’

Examples

x <- 10class(x) # "numeric"oldClass(x) # NULLinherits(x, "a") #FALSEclass(x) <- c("a", "b")inherits(x,"a") #TRUEinherits(x, "a", TRUE) # 1inherits(x, c("a", "b", "c"), TRUE) # 1 2 0

col Column Indexes

Description

列番号又は因子の列ラベルを示す整数行列を返す.

Usage

col(x, as.factor = FALSE)

Page 87: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Colon 87

Arguments

x 行列風オブジェクト,つまり2次元の dimを持つ.

as.factor 論理値で値を数値ではなく列ラベルの因子(必要なら作られる)として返すかどうかを指示する.

Value

整数(もしくは因子)行列で xと同じ次元を持ち,その ij番目の要素が j (または j番目の列のラベル)に等しい.

References

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

See Also

行を得るには row.

Examples

# 行列の非対角成分を取り出すma <- matrix(1:12, 3, 4)ma[row(ma) == col(ma) + 1]

# 5 x 5 単位行列を作るx <- matrix(0, nrow = 5, ncol = 5)x[row(x) == col(x)] <- 1

Colon Colon Operator

Description

規則的な数列を生成する.

Usage

from:toa:b

Arguments

from 数列の開始値.

to (最大の)数列の終端値.

a, b 同じ長さの factor.

Page 88: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

88 colSums

Details

二項演算子 :は二つの意味を持つ:因子に対しては a:bは interaction(a, b)と同値である(しかしながら水準は順序つけられており,異なるラベルが付く).

他の引数については from:toは seq(from, to)と同値であり, fromから toまでの階差1または -1の数列と同値である.値 toは,もしそれが fromと約 1e-7程度の食い違いを除いて整数分だけ異なれば含められる.非数値引数は内部的に(従って選択適用メソッド無しで)数値に強制変換される—複素数値はその虚数部が警告なしに捨てられる.

Value

数値引数に対しては数値ベクトル.これはもし from が型 integer ならば整数値になり,結果は Rの整数型として表現される.さもなければ型 "double" (言い換えれば mode"numeric")になる.

因子に対しては,順序付きでない因子で,ラベル la:lbを持ち,辞書式に順序が付く(つまり lbが最速で変化する).

References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth &Brooks/Cole.(数値引数に対して:Sは因子に対する :を持たない.)

See Also

seq (from:toの一般化).

因子に対する :の代替物は interaction.

交互作用の形式的表現中で使われる :については, formulaを見よ.

Examples

1:4pi:6 # 実数6:pi # 整数

f1 <- gl(2, 3); f1f2 <- gl(3, 2); f2f1:f2 # 因子,"クロス" f1 x f2

colSums Form Row and Column Sums and Means

Description

数値配列の行和,列和そして平均を作る.

Page 89: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

colSums 89

Usage

colSums (x, na.rm = FALSE, dims = 1)rowSums (x, na.rm = FALSE, dims = 1)colMeans(x, na.rm = FALSE, dims = 1)rowMeans(x, na.rm = FALSE, dims = 1)

.colSums(x, m, n, na.rm = FALSE)

.rowSums(x, m, n, na.rm = FALSE)

.colMeans(x, m, n, na.rm = FALSE)

.rowMeans(x, m, n, na.rm = FALSE)

Arguments

x 2もしくはそれ以上の次元の配列で.数値,複素数値,整数,論理値を含む.又は数値データフレーム.

na.rm 論理値.欠損値(NaNを含む)は計算前に除外するか?

dims 整数:どの次元を加えあげる‘行’又は‘列’と見做すか.row*に対しては和及び平均は次元 dims+1, ... 上; col*に対しては次元 1:dims上.

X 数値行列.

m, n Xの次元.

Details

これらの関数は applyを適当なマージンに FUN = mean又は FUN = sumで適用するのと同値であるが,相当速い.速度重視で書かれているため NaNと NAに関する微妙な点が曖昧にされている.もし na.rm = FALSEで, NaNか NAが和に現れれば,結果は NaNか NAになるが,しかしこれはプラットフォーム依存である.

欠損値の無視は列毎もしくは行毎になされることを注意しよう.従って列(行)和は同じ行集合に関するものではないかもしれない.完全な行や列に対してだけ使うためには,最初にそれらを na.omit や complete.cases で選択する (もしかすると x の転置に関して).

名前の先頭にドットがあるバージョンはプログラミングで使う骨格だけのバージョンである:これらは数値行列にだけ適用され結果に名前を付かない.

Value

適当なサイズの数値か複素数値配列.もし結果が一次元ならばベクトルになる.最初の4つの関数に対しては dimnames (ベクトルの結果に対しては names )がオリジナルの配列から取られる.

もし加えあげられる範囲内に値がなければ (na.rm = TRUEで欠損値を取り除いた場合),出力のその成分は 0 (*Sums)又は NaNとされ, sumと meanとに首尾一貫する.

See Also

apply, rowsum

Examples

## 行列の行和と列和を計算:x <- cbind(x1 = 3, x2 = c(4:1, 2:5))rowSums(x); colSums(x)

Page 90: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

90 commandArgs

dimnames(x)[[1]] <- letters[1:8]rowSums(x); colSums(x); rowMeans(x); colMeans(x)x[] <- as.integer(x)rowSums(x); colSums(x)x[] <- x < 3rowSums(x); colSums(x)x <- cbind(x1 = 3, x2 = c(4:1, 2:5))x[3, ] <- NA; x[4, 2] <- NArowSums(x); colSums(x); rowMeans(x); colMeans(x)rowSums(x, na.rm = TRUE); colSums(x, na.rm = TRUE)rowMeans(x, na.rm = TRUE); colMeans(x, na.rm = TRUE)

## 配列dim(UCBAdmissions)rowSums(UCBAdmissions); rowSums(UCBAdmissions, dims = 2)colSums(UCBAdmissions); colSums(UCBAdmissions, dims = 2)

## 複素数ケースx <- cbind(x1 = 3 + 2i, x2 = c(4:1, 2:5) - 5i)x[3, ] <- NA; x[4, 2] <- NArowSums(x); colSums(x); rowMeans(x); colMeans(x)rowSums(x, na.rm = TRUE); colSums(x, na.rm = TRUE)rowMeans(x, na.rm = TRUE); colMeans(x, na.rm = TRUE)

commandArgs Extract Command Line Arguments

Description

Rセッションが起動された時に与えられたコマンドライン引数のコピーへのアクセスを提供する.

Usage

commandArgs(trailingOnly = FALSE)

Arguments

trailingOnly 論理値.‘--args’の後の引数だけを返すべきか?

Details

これらの引数は標準の Rのコマンドライン処理がされる前に取得される.これはそれらが未変更の値であることを意味する.これは特に Rへの ‘--args’コマンドラインフラグがあると有用である.なぜならこのフラグの後はすべてスキップされるからである.

Value

実行プログラムの名前とユーザが与えたコマンドライン引数を含む文字列.最初の要素は Rがそれにより起動された実行プログラムの名前である.この要素の正確な形式はプラットフォーム依存である:それは完全に資格のある名前かもしれないし,単にアプリケーションの最後の成分(又は基本名)かもしれず,もしくは埋め込み Rに対してはそれはプログラマーが与えたなんにでもなりうる.

もし trailingOnly = TRUEならば, ‘--args’の後に与えられた(もしあれば)これらの引数の文字列.

Page 91: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

comment 91

See Also

Startup (Unixの場合)

BATCH

Examples

commandArgs()## シェルの引用化事情を配慮して,このアプリケーションの## それが起動された時の状態のコピーを生み出す## system(paste(commandArgs(), collapse = " "))

comment Query or Set a "comment" Attribute

Description

これらの関数は任意の Rオブジェクトのコメント属性を設定し,また問い合わせる.これは典型的にはデータフレームやモデル当てはめで有用である.

他の属性とは異なり,コメントは (print や print.default によって) プリントされない.

NULLや長さがゼロの文字列ベクトルを付値すればコメントを取り除ける.

Usage

comment(x)comment(x) <- value

Arguments

x 任意の Rオブジェクト

value 文字列ベクトルもしくは NULL.

See Also

他の属性については attributesとattr.

Examples

x <- matrix(1:12, 3, 4)comment(x) <- c("This is my very important data from experiment #0234",

"Jun 5, 1998")xcomment(x)

Page 92: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

92 Comparison

Comparison Relational Operators

Description

原子的なベクトル中の値の比較を行う二項演算子.

Usage

x < yx > yx <= yx >= yx == yx != y

Arguments

x, y 原子的ベクトル,シンボル,呼び出し,もしくはメソッドが書かれている他のオブジェクト.

Details

二項比較演算子は総称的関数である:メソッドを Ops)グループ総称的関数経由で書くことが出来る. (選択適用がどのように計算されるかについては Opsを見よ.)

文字列ベクトル中の文字列の比較は使用中のロケールの照合用系列を用いて辞書式に行われる:localesを見よ. ‘en_US’のような照合用系列は通常 ‘C’と異なる (これは ASCIIを使う).そして驚くようなことが起き得る.照合順序については any仮定を置くように注意しよう:例えばエストニア語の Zは Sと Tの間に来るし,照合は必ずしも文字毎ではない –デンマーク語では aaは単一文字として Zの後にソートされる.ウェールズ語では ngは単一のソート単位であったりなかったりする:もしそうならそれは gに続く.ある種のプラットフォームはロケールを無視し,常に8ビットロケールや UTF-8ロケールでのバイトの数値的順序でソートする(そして異なった文字セットでは同一の言語に対し同じ順序でソートしなかったりする).非文字(空白,句読点,ハイフン,分数記号等)はより一層混乱している.

文字列は異なったマークエンコーディングを使って比較できる (Encodingを見よ):それらは比較前に UTF-8に変換される.

バイト(raw)ベクトルは実際には順序を持つとは考えられないが,バイト表現の数値的順序が使われる.

少なくとも xと yの一方が原子的ベクトルである必要があるが,もし他方がリストであれば Rはそれを原子的ベクトル型に強制変換する:これはもしリストが長さが1で正しい型に強制変換可能な要素からなっている際はうまく行くだろう.

もし二つの引数が異なった型の原子的ベクトルならば,一方が他の型に強制変換される.(逆方向の)優先順位は文字,複素数,数値,整数,論理値,そしてバイト型である.

欠損値 (NA)と NaNは自分自身とさえ比較不能と見做されるので,それらを含む比較は NAを生じる.欠損値はまた文字列比較で一方が現在のロケールで不正の時にも生じる.

シンボルや呼び出しのような言語オブジェクトは比較前に文字列に逆構文解析される.

Page 93: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Comparison 93

Value

要素ごとの比較結果を示す論理値ベクトル.短い方のベクトルの要素は必要に応じリサイクルされる.

配列や時系列等のオブジェクトは比較可能である限りこのようにして比較される.

S4メソッド

これらの演算子は S4 Compareグループ総称的関数のメンバーであり,それらに対するメソッドを,引数 c(e1, e2)を用いて,個別にまたグループ総称的 (もしくは Opsグループ総称的)に書くことが出来る.

Note

単一の TRUEや FALSEが必要とされる if構文に於けるように,検査に ==と !=を使用しない.完全に確実でない限り代わりに identical関数を使うべきである.

数値や複素数値に対しては,==と !=は分数の有限表現も丸め誤差も許容しないことを忘れない.identical と共に使われる all.equal がほとんどすべての場合に好ましい.以下の例を見よ.(このことは他の比較演算子にも当てはまる.)

これらの演算子は時折,例えば `<`(x, y)のような関数形で使われる: Ops中で引数の照合がどのようになされるかの記述を見よ.

References

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

文字列の照合は複雑なトピックである.入門には https://en.wikipedia.org/wiki/Collating_sequenceを見よ. Unicode照合アルゴリズム (http://unicode.org/reports/tr10/)はますます影響度を増して行くであろう.もし利用可能なら Rは既定で ICU照合(http://site.icu-project.org/)を用いる(Cロケール中を除く).

See Also

因子引数の挙動については factor.

演算子の優先順序については Syntax.

ICUの利用可能性については capabilitiesを,そしてその時の文字列照合アルゴリズムのチューニングについては icuSetCollate.

Examples

x <- stats::rnorm(20)x < 1x[x > 0]

x1 <- 0.5 - 0.3x2 <- 0.3 - 0.1x1 == x2 # 殆どの機械で FALSEidentical(all.equal(x1, x2), TRUE) # いつでも TRUE

# 殆どの8ビット文字セットと Unicode の Latin-1 の範囲z <- c(32:126, 160:255)x <- if(l10n_info()$MBCS) {

Page 94: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

94 complex

intToUtf8(z, multiple = TRUE)} else rawToChar(as.raw(z), multiple = TRUE)## 番号によるwriteLines(strwrap(paste(x, collapse=" "), width = 60))## ロケール照合によるwriteLines(strwrap(paste(sort(x), collapse=" "), width = 60))

complex Complex Vectors

Description

Rの複素数算術をサポートする基本関数.

Usage

complex(length.out = 0, real = numeric(), imaginary = numeric(),modulus = 1, argument = 0)

as.complex(x, ...)is.complex(x)

Re(z)Im(z)Mod(z)Arg(z)Conj(z)

Arguments

length.out 数値.出力ベクトルの希望の長さ.入力は必要に応じてリサイクルされる.

imaginary 数値ベクトル.

modulus 数値ベクトル.

argument 数値ベクトル.

z モード complexのオブジェクト,又はメソッドが定義されているクラスのオブジェクト.

... 他のメソッドへ・から引き渡される追加引数.

Details

複素数ベクトルは complexで構成できる.ベクトルは長さ,その実・虚部,もしくはモジュラスと角度を与えて指定できる. (長さだけを与えれば複素数のゼロだけのベクトルを構成する.)

as.complexはその引数を複素数型に変換しようと試みる: as.vectorと同様に名前を含む属性を剥ぎ取る. NAと NaNのすべての方は複素数値の NAに変換され,実・虚部の双方が NAになる.

is.complexと is.numericは決して同時には TRUEにならないことを注意しよう.

関数 Re, Im, Mod, Argそして Conjはそれらの通常の解釈を持ち,複素数値の実部,虚部,モジュラス,角度,そして複素共役を返す.モジュラスと角度はまた極座標と呼ばれる.

Page 95: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

conditions 95

もし実数の xと yを持つ z = x+ iyに対して r = Mod(z) =√x2 + y2そして φ = Arg(z),

x = r ∗ cos(φ)そして y = r ∗ sin(φ)である.これらはすべて内部総称的でプリミティブ関数である:それらに対するメソッドが個別にもしくは Complexグループ総称的に定義できる.

加えて,複素数に対する初等的な三角関数,対数関数,指数関数,平方根そして双曲線関数が実装されている.

内部的には複素数は倍精度実数の対として保管されており,一方もしくは双方が NaNまたは正負の無限大になり得る.

S4メソッド

as.complexはプリミティブで S4メソッドのセットを持つことが出来る.

Re, Im, Mod, Argそして Conjは S4グループ総称的 Complexであり,従って S4メソッドをそれらに個別に,又はグループ総称的に設定できる.

References

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

Examples

require(graphics)

0i ^ (-3:3)

matrix(1i^ (-6:5), nrow = 4) #- すべての列は同じ0 ^ 1i # 複素数の NaN

## 複素正規ベクトルを作るz <- complex(real = stats::rnorm(100), imaginary = stats::rnorm(100))## or also (less efficiently):z2 <- 1:2 + 1i*(8:9)

## Arg(.) は角度である:zz <- (rep(1:4, len = 9) + 1i*(9:1))/10zz.shift <- complex(modulus = Mod(zz), argument = Arg(zz) + pi)plot(zz, xlim = c(-1,1), ylim = c(-1,1), col = "red", asp = 1,

main = expression(paste("Rotation by "," ", pi == 180^o)))abline(h = 0, v = 0, col = "blue", lty = 3)points(zz.shift, col = "orange")

conditions Condition Handling and Recovery

Description

これらの関数はエラーや警告を含む例外的条件の処理に対する機構を与える.

Page 96: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

96 conditions

Usage

tryCatch(expr, ..., finally)withCallingHandlers(expr, ...)

signalCondition(cond)

simpleCondition(message, call = NULL)simpleError (message, call = NULL)simpleWarning (message, call = NULL)simpleMessage (message, call = NULL)

## S3 method for class 'condition'as.character(x, ...)## S3 method for class 'error'as.character(x, ...)## S3 method for class 'condition'print(x, ...)## S3 method for class 'restart'print(x, ...)

conditionCall(c)## S3 method for class 'condition'conditionCall(c)conditionMessage(c)## S3 method for class 'condition'conditionMessage(c)

withRestarts(expr, ...)

computeRestarts(cond = NULL)findRestart(name, cond = NULL)invokeRestart(r, ...)invokeRestartInteractively(r)

isRestart(x)restartDescription(r)restartFormals(r)

.signalSimpleWarning(msg, call)

.handleSimpleError(h, msg, call)

Arguments

c 条件オブジェクト.

call 呼び出し表現式.

cond 条件オブジェクト.

expr 評価されるべき表現式.

finally 復帰もしくは励起(excite)前に評価されるべき表現式.

h 関数.

message 文字列.

Page 97: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

conditions 97

msg 文字列.

name 再開処理(restart)の名前を与える文字列.

r 再開処理オブジェクト.

x オブジェクト.

... 追加引数.以下の詳細を見よ.

Details

条件システムはエラーと警告を含む例外的条件の合図と処理に対する機構を与える.条件はメッセージとそれが生起した呼び出しのような,生起条件に関する情報を含むオブジェクトとして表現される.現在の条件は S3風のオブジェクトであるが,いつか変更されるかもしれない.

条件は抽象的クラス conditionを継承するオブジェクトである.エラーと警告は抽象的サブクラス errorと warningを継承する.クラス simpleErrorは stopとすべての内部エラー信号によって使われ,そして simpleMessageは messageによって使用される.同じ名前による構成子は引数として条件を記述する文字列とオプションの呼び出しを取る.関数 conditionMessageと conditionCallはメッセージと条件の呼び出しを返す総称的関数である.

条件は signalConditionによりシグナルが生じる.更に, stopと warning関数は条件付き引数も受け付けるように変更されている.

関数 tryCatchはその表現式引数を ... 引数中で提供されたハンドラーが利用可能な文脈中で評価する.それから finally表現式が tryCatchが呼び出された文脈中で評価される;つまり,現在の tryCatch呼び出しに与えられたハンドラーは finally表現式が評価される時アクティブではない.

tryCatchへの ... 引数中で与えられたハンドラーは exprの評価の持続の間確立される.exprの評価中に如何なる条件もシグナルを発しなければ, tryCatchは表現式の値を返す.

ある条件が exprの評価中にシグナルを発生すれば,条件のクラスにマッチするものに対し,確立されたハンドラーが最も最近に確立されたそれからチェックする.一つのtryCatchに複数のハンドラーが提供されると,最初のものが二番目よりより新しいとされる.もしハンドラーが見つかると,制御はそのハンドラーを確立した tryCatchの呼び出しに移り,見つかったハンドラーとすべてのより最近のハンドラーが不確立になる.ハンドラーがその引数を条件として呼び出され,ハンドラーが返した結果が tryCatch呼び出しの結果として返される.

呼び出しハンドラーは withCallingHandlersによって確立される.もしある条件がシグナルを生じ,適用可能なハンドラーが呼び出しハンドラーならば,そのハンドラーが条件がシグナルを生じた文脈中で signalConditionにより呼びだされる.しかしながら利用可能なハンドラーはハンドラーのスタックで呼びだされたハンドラーよりも下にあるものに制限される.もしハンドラーが復帰すると,次のハンドラーが試される;最後のハンドラーが試されると signalConditionは NULLを返す.

ユーザによる中断は既定の中断動作の前にクラス conditionを継承するクラス interruptの条件のシグナルを生じさせる.

再開処理は復元プロトコルを確立するために使われる.それらは withRestartsを使って確立することが出来る.一つの予め確立された再開処理はトップレベルへのジャンプを表す abortである.

findRestart と computeRestarts は利用可能な再開処理を探す. findRestart は指定された名前を持つ最も最近に確立された再開処理を返す.computeRestartsはすべての再開処理のリストを与える.どちらも条件の引数を与えることができ,そうするとその条件に適用できない再開処理を無視する.

Page 98: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

98 conditions

invokeRestartは制御を指定された再開処理が確立した点へ移し,そして再開処理のハンドラーを,(もしあれば) invokeRestartへの追加引数として与えられた引数と共に呼び出す. invokeRestartへの再開処理引数は文字列でも良く,その場合 findRestartが再開処理を探すために使われる.

withRestarts に対する新しい再開処理は幾つもの方法で指定できる.最も単純なものは name = functionの形式で,ここで関数は再開処理が起動された時に呼び出すハンドラーである.もう一つの単純な変種は name = string とすることで,ここで文字列はfindRestartによって返される再開処理オブジェクトの description欄に保管されている:このケースではハンドラーはその引数を無視し NULLを返す.最も柔軟性に富んだ再開処理指定の形式は,handler, description,そして testのような幾つかの欄を含むことが出来るリストを使うことである. test欄は唯一の引数が条件である関数を含むべきで,これは再開処理が条件に適用されれば TRUEを,さもなければ FALSEを返す;既定の関数はあらゆる条件に対して TRUEを返す.

再開処理に対して指定できる一つの欄は interactiveである.これは引数を持たず,再開処理ハンドラーに引き渡す引数リストを返すべきである.必要ならリストは対話的にユーザが与えても良い.関数 invokeRestartInteractivelyはこの関数を再開処理を起動する際に使う引数を得るために呼び出す.既定の interactiveメソッドはハンドラー関数の形式的引数に対する値についてユーザに問い合わせる.

.signalSimpleWarning と .handleSimpleError は内部的に使われ,直接呼び出すべきではない.

References

tryCatch機構は Javaのエラー処理に類似している.呼び出しハンドラーは Common Lispと Dylanに基づいている.再開は Common Lispの再開機構に基づいている.

See Also

シグナル条件には stopと warning,そして tryは本質的に tryCatchの簡易版.パッケージ tools中の assertConditionは上記のハンドラーによって条件が合図され動作したことをテストする.

Examples

tryCatch(1, finally = print("Hello"))e <- simpleError("test error")## Not run:stop(e)tryCatch(stop(e), finally = print("Hello"))tryCatch(stop("fred"), finally = print("Hello"))

## End(Not run)tryCatch(stop(e), error = function(e) e, finally = print("Hello"))tryCatch(stop("fred"), error = function(e) e, finally = print("Hello"))withCallingHandlers({ warning("A"); 1+2 }, warning = function(w) {})## Not run:{ withRestarts(stop("A"), abort = function() {}); 1 }

## End(Not run)withRestarts(invokeRestart("foo", 1, 2), foo = function(x, y) {x + y})

##--> より多くの例には##--> demo(error.catching)

Page 99: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

conflicts 99

conflicts Search for Masked Objects on the Search Path

Description

conflictsは検索パス上の二つ以上の場所にある同名のオブジェクトを報告する.これは普通ユーザの作業空間かパッケージ中のオブジェクトが同名のシステムオブジェクトをマスクしているからである.これは意図しないマスキングを見つけるのに役立つ.

Usage

conflicts(where = search(), detail = FALSE)

Arguments

where 検索パスの一部,既定ではすべての検索パス.

detail もし TRUEなら検索パスのすべてのメンバーに対するマスクされた,もしくはマスクする関数を与える.

Value

もし detail = FALSEならばマスクされたオブジェクトの文字列.もし detail = TRUEならば検索パスのそのメンバー中のマスクされた,もしくはマスクするオブジェクトを与える文字列のリスト.空のベクトルは無視される.

Examples

lm <- 1:3conflicts(, TRUE)## $.GlobalEnv のようなものを与える# [1] "lm"## $package:base# [1] "lm"

## 自分の "作業空間" から他をマスクするものを取り除く:remove(list = conflicts(detail = TRUE)$.GlobalEnv)

connections Functions to Manipulate Connections (Files, URLs, ...)

Description

コネクションを作り,開き,そして閉じる関数,つまり可能性として圧縮されたファイル,URL,パイプ等の“一般化ファイル”.

Page 100: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

100 connections

Usage

file(description = "", open = "", blocking = TRUE,encoding = getOption("encoding"), raw = FALSE,method = getOption("url.method", "default"))

url(description, open = "", blocking = TRUE,encoding = getOption("encoding"), method)

gzfile(description, open = "", encoding = getOption("encoding"),compression = 6)

bzfile(description, open = "", encoding = getOption("encoding"),compression = 9)

xzfile(description, open = "", encoding = getOption("encoding"),compression = 6)

unz(description, filename, open = "", encoding = getOption("encoding"))

pipe(description, open = "", encoding = getOption("encoding"))

fifo(description, open = "", blocking = FALSE,encoding = getOption("encoding"))

socketConnection(host = "localhost", port, server = FALSE,blocking = FALSE, open = "a+",encoding = getOption("encoding"),timeout = getOption("timeout"))

open(con, ...)## S3 method for class 'connection'open(con, open = "r", blocking = TRUE, ...)

close(con, ...)## S3 method for class 'connection'close(con, type = "rw", ...)

flush(con)

isOpen(con, rw = "")isIncomplete(con)

Arguments

description 文字列.コネクションの説明:‘詳細’を見よ.

open 文字列. コネクションをどのように開くかの説明 (もしそれが内部的に開かれる必要があるとき).可能な値については‘モード’を見よ.

blocking 論理値.‘ブロック化’節を見よ.

encoding 仮定されるエンコーディングの名前. ‘エンコーディング’節を見よ.

raw 論理値.もし真ならば ‘raw’ インタフェイスが使われる.これは文字デバイスのような通常のファイルでない引数に対してより適している.

Page 101: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

connections 101

これはテキストモードで開かれるとき圧縮ファイルに対するチェックを抑制し, ‘ファイル’が seek 可能でないかもしれないことを主張する.

method 文字列,部分的に c("default", "internal", "wininet", "libcurl")とマッチする: ‘詳細’を見よ.

compression 0–9 中の整数.書き込みの時適用される圧縮の度合いで,圧縮無しから可能な最大圧縮まで. xzfileに対しては負でも良い:‘圧縮’節を見よ.

timeout 数値:このコネクションに用いられる時間切れ(秒単位).ある種の OSは非常に大きな値をゼロとして扱うかもしれないことを注意する:しかしながら POSIX標準は最大31日をサポートする.

filename zipファイル中のファイル名.

host 文字列. ポートに対するホスト名.

port 整数.TCPポート番号.

server 論理値.ソケットはクライアントかサーバーか?

con コネクション.

type 文字列.現在無視される.

rw 文字列.空か "read"又は "write",部分マッチングが許される.

... 他のメソッドに(から)引き渡される引数.

Details

最初の9個の関数はコネクションを作る.既定では (socketConnectionを除けば)コネクションは開かれていないが,引数 openに空でない値を設定すれば開くことが出来る.

fileに対しては description引数は開かれるべきファイルへのパスか,完全な URL (その時は呼び出し urlと同値になる),又は "" (既定)か "clipboard" (‘クリップボード’節を見よ)である.プロセスの Cレベルの標準入力を参照するには "stdin"を使う(これはコンソールや Rの埋め込みバージョンに接続している必要は無く, Windowsの RGui中にはない). stdinの微妙に異なった Rレベルの概念についてはまた stdin()を見よ.

urlに対しては description引数はスキームを含む完全なURLである (‘http://’, ‘https://’,‘ftp://’ 又は ‘file://’ のような).メソッド "internal" はコネクション導入以来のそれである.メソッド "wininet"はWindowsでだけ利用可能で,メソッド "libcurl"は R3.2.0以来オプションで利用可能である.メソッド "default" (R 3.2.0以来)は URLスキームに依存して適当なメソッドを選ぶ,例えば ‘https://’そして ‘ftps://’ URLに対しては "libcurl"でその他には "internal"になる.既定メソッドは options(url.method = )(including for when URLが fileに引き渡された時を含む)を使って変更できる:もし未設定ならそれはメソッド "default"である.プロキシが指定できる:download.fileを見よ.

(Windowsでは setInternet2を見よ.これは "internal"メソッドが "wininet"にマップされているかどうかを選択する:これは R 3.2.2. からは既定である.)

gzfileに対しては description引数は gzipで圧縮されたファイルへのパスである:これはまた非圧縮ファイルに対しても, bzip2, xzそして lzmaで圧縮されたファイルにも開くことができる.

bzfileに対しては description引数は bzip2で圧縮されたファイルへのパスである.

xzfile に対しては description 引数は xz で圧縮されたファイル(https://en.wikipedia.org/wiki/Xz) 又は(読み込み専用) lzma で圧縮されたファイル (https://en.wikipedia.org/wiki/LZMA)のパスである.

Page 102: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

102 connections

unz は zip ファイル中の一つのファイルのバイナリモードでの読み取り専用である.description引数は zipファイルへの完全なパスで,必要なら拡張子 ‘.zip’を持つ.

pipeに対しては description引数はパイプされる・パイプからのコマンドラインである.これはシェル中,Windowsでは環境変数 COMSPECで指定されるもの,で実行される.

fifoに対しては description引数は fifoへのパスである.

すべてのプラットフォームは file, pipe, gzfile, bzfile, xzfile, unzそして url("file://")コネクションをサポートする.他のコネクションは部分的に移植されていたり,全く移植されていない可能性がある. (これらはほとんどの UnixプラットフォームとすべてのWindowsで動作する.)

意図することは fileと gzfileは一般にそれぞれテキストファイル(ファイル,‘http://’と ‘https://’ URL)とバイナリファイル用ということである.

open, closeそして seekは総称的関数である:以下はコネクションに関連するメソッドに適用される.

openはコネクションを開く.一般にコネクションを使う関数はそれらが開かれていなければ開くが,再びそれらを閉じる.従ってコネクションを開いたままにするにはコネクションを明示的に呼び出す.

closeはコネクションを閉じ消去する.これはコネクションを参照する Rオブジェクトが最早なければそのうち自動的に起こる.

最大128のコネクションがいつでも同時に確保できる(必ずしも開かれている必要はない).これらのうち三つは予め確保されている(stdoutを見よ). OSが様々なタイプのコネクションの僧都うに制限を設けるが,これらは通常125より大きい.

flushは読み書きで開かれたコネクションの出力ストリームをフラッシュする(移植されていれば,現在ファイルとクリップボードコネクション,stdoutと stderr).

もし fileもしくは(殆どのプラットフォームで) fifoコネクションに対して description引数が ""ならば,ファイルと /fifoは即座に開かれ(open = "w+b"でない限り "w+"モードで)そしてファイルシステムからリンクを外される.これは書き込みとその後の読み取り用の一時的なファイルと fifoを提供する.

Value

file, pipe, fifo, url, gzfile, bzfile, xzfile, unz そして socketconnection はクラス"connection" を継承するコネクションオブジェクトを返し,より多くの特殊なクラスを持つ.

openと flushは不可視で NULLを返す.

closeは不可視で NULLか整数状態を返す.状態はコネクションが最後に閉じられた際のもので,ある種のコネクションに対してだけ得られる(たとえば,pipes, filesそして fifo):典型的にはゼロは成功を指示する.

isOpenはコネクションが現在開かれているかどうかを示す論理値を返す.

isIncompleteは最後の読み込みがブロックされたか,もしくは出力テキストコネクションに対してはフラッシュされていない出力があるかどうかを示す論理値を返す.

URL

urlと fileは URLスキーム ‘http://’, ‘https://’, ‘ftp://’そして ‘file://’をサポートする:最初の三つは OSのサポートを必要とする(すべての既知の Rプラットフォームはサポートしている).

method = "libcurl" はより多くのスキームを認める:どのスキームかはプラットフォーム依存であるが (libcurlVersion を見よ),殆どのプラットフォームは ‘https://’ と‘ftps://’を認める.

Page 103: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

connections 103

殆どのメソッドは ‘http://’ (URLencodeを見よ)が空白のような特殊文字をパーセントエンコードしないが,"wininet"メソッドはするように見える.

‘file://’ URLに関するノート.最も一般的な形式(RFC1738から)は ‘file://host/path/to/file’であるが,Rはローカルマシーンを参照する空の host欄を持つ形式だけを認める.

Unix風システムでは,これはそうすると ‘file:///path/to/file’である.ここで ‘path/to/file’は ‘/’に相対的である.従って三案目のスラッシュは厳密にパスの一部ではない指定の一部であるが,これはファイル ‘/path/to/file’を指定する方法と見做される.ファイル URLを使って相対的なパスを指定することは不可能である.

この形式ではパスはファイルシステムのルートに相対的であり,Windowsの概念とは異なる.Windowsでの標準的形式は ‘file:///d:/R/repos’である:Rと Unixの以前のバージョンとの互換性から他のすべての形式は Rに ‘file://’プラス path_to_fileとして構文解析される.同様に,RFC1738は認めていないが,バックスラッシュはパス中で認められる.

パーセントエンコードされた ‘file:’ URLをデコードする試みは一切されない:必要なら URLdecodeを呼び出す.

"internal" メソッドはリダイレクトされた HTTP URL をフォローしない:メソッド"wininet" (Windowsでは既定)と "libcurl"はどちらもする(HTTPS URLに対しても).

サーバー側でキャッシュされたデータは常に受け入れられる.

関数 download.fileと貢献パッケージ RCurlは URLからのダウンロードのより完備した機能を提供する.

モード

引数 openに対する可能な値は

"r"又は "rt" テキストモードの読み込みで開く.

"w" or "wt" テキストモードの書き込みで開く.

"a" or "at" テキストモードの追加で開く.

"rb" バイナリモードの読み取りで開く.

"wb" バイナリモードの書き込みで開く.

"ab" バイナリモードの追加で開く.

"r+", "r+b" 読み書きで開く."w+", "w+b" 最初にファイルを切り詰めてから読み書きで開く,"a+", "a+b" 読み取りと追加で開く.

すべてのモードがすべてのコネクションに適用可能ではない:例えば URLは読み取りだけで開くことが出来る.ファイルとソケットコネクションだけが読み書き双方で開くことが出来る.サポートされていないモードは普通黙って取り替えられる.

もしファイルや fifoが Unix風システム上で作られると,そのパーミッションは現在のumask (Sys.umaskを見よ)の設定から許される最大のものになる.

多くのコネクションに対して,テキストとバイナリモードの間にはほとんどか全く差異が無い.Windowsのファイル風コネクションに対しては,行末の翻訳(LFと CRLF)はテキストモードだけで行われる(しかし readLinesのようなコネクション上のテキスト読み込み操作では scanと sourceは任意の行末形式にたいして動作する).様々な Rの操作はもしかするとたった一つのモードでのみ可能かもしれない:例えば pushBackはテキスト向きで,テキストモードでの読み込みに対して開かれたコネクション上でのみ許される.そして readBin, loadそして saveのような操作はバイナリモードのコネクション上でだけ許される.

Page 104: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

104 connections

コネクションのモードは実際に開かれた時決定され,もし open = ""が与えられる(ソケットコネクション以外では既定)と延期される. openの明確な呼び出しでモードを指定できるが,さもなければモードは "r"になるであろう. (gzfile, bzfileそして xzfileコネクションは例外である.なぜなら圧縮ファイルは常にバイナリモードで開かれなければならず,Windows上でさえ行末の変換はされないため,既定モードは "rb"と解釈されるから.)書き込みアクセス,テキストオンリー又はバイナリオンリーモードが必要な殆どの操作はまだ開かれていないコネクションの既定モードを上書きする.

追加モードは圧縮ファイルコネクションに対しては慎重に考慮する必要がある.それらはファイルへの単一の圧縮ストリームではなく,むしろ新しいファイルへの圧縮ストリームを追加する.読み取りは最初のストリームの最後を超えるかもしれないしそうでないかもしれない:現在 Rは gzfile, bzfileそして xzfileコネクションに対してそのように振る舞う.

圧縮

Rは gzip, bzip2そして xzによる圧縮をサポートしている(R 2.10.0で付け加わった:またその前進である lzma圧縮の読み取り専用のサポート).

読み取りには圧縮(もしあれば)のタイプはファイルの先頭の数バイトから決定できる.従って file(raw = FALSE)コネクションに対しては,もし if openが "", "r"又は "rt"ならば,コネクションは非圧縮ファイルのみならず任意の圧縮ファイルタイプを読み取ることが出来る. ("rb"を使えば圧縮ファイルをバイト単位で読み取ることが出来る.同様に gzfileコネクションは任意の読み取りモードで任意の圧縮と非圧縮形式ファイルを読むことが出来る.

(もし open が未指定で,その名前のファイルが存在すれば,圧縮のタイプはコネクションが作られた時決定される.もしその名前で異なった圧縮形式でファイルに書き込むためにコネクションを開くことを意図しているならば,コネクションが作られた時にopen = "w"を指定する.もしくはコネクションを作る前にファイルを unlinkする.

書き込みモードのコネクションに対しては compressはファイルサイズを最小化するためにどれだけ圧縮度を高めるかを指定する.そして高い値はより多くの CPU時間と作業メモリ (xzfile(compress = 9)に対し最大 800Mb)を必要とする. xzfileに対しては負の compress値は xz引数 ‘-e’を加えることに対応する:これはより多くの圧縮時間(二倍?)を必要とするが(僅かに)より良い圧縮ができる可能性がある.既定値 (6) ha良い圧縮度と控えめなメモリ使用度(100Mb)を持つ:しかしながらもし xz圧縮を使っているならば恐らく高度の圧縮を目指しているのだろう.

圧縮のタイプを選ぶことはトレードオフを含む: gzip, bzip2 そして xz は順によりサポートの度合いが減り,圧縮と解凍の双方により多くの資源を必要とし,より高度の圧縮度を達成する(しかしながら個々のファイルは一般的傾向に反するかもしれない).典型的な経験では bzip2 圧縮はテキストファイルで gzip 圧縮より 15% 優れており,xz 圧縮は最大 30% 優れている. R の save ファイルでの経験は同様であるが,ある種の大きな ‘.rda’ファイルでは xz圧縮は他の二つよりも遥かに良い.現在の計算機ではcompress = 9でも解凍時間は典型的には控えめで,圧縮ファイルの読み取りは普通非圧縮のそれよりもディスクの動作の減少のせいで速い.

エンコーディング

コネクションの入出力ストリームのエンコーディングは iconvに与えたのと同様に名前で指定できる:自分のプラットフォームでどのようなエンコーディング名が認識されるのかを見つけるにはそのヘルプ頁を見よ.加えて ""と "native.enc"は共に ‘ネイティブ’エンコーディングを意味する,つまり現在のロケールでの内部エンコーディングであり,従って翻訳は行われない.

Page 105: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

connections 105

再エンコーディングはテキストモードのコネクションに対してだけ動作する:最エンコーディングがバイナリモードで指定されたコネクションからの読み取りはバイトのストリームを読み込むが,テキストとバイナリモードの読み取りの混合(つまり readLinesとreadCharの呼び出し)は恐らく不正な結果に導かれる.

エンコーディング "UCS-2LE"と "UTF-16LE"は特別に扱われる.なぜならそれらは Win-dowsの ‘Unicode’テキストファイルにふさわしい値であるからである.もし最初の2バイトが Byte Order Mark 0xFEFFならば iconvが BOMを受け入れないため,これらは取り除かれる.殆どの移植は BMOをエンコーディング "UCS-2"を用いて処理し適当なバイト順序を選択するが,しないもの(初期の glibcを含む)もある. "UTF-16"と "UCS-2"の間には微妙な差がある (https://en.wikipedia.org/wiki/UTF-16を見よ:代理ペアを必要とする ‘Supplementary Planes’中の文字の使用は非常に稀なため "UCS-2LE"が適切な最初の選択になる (より広範囲に実装されているため).

R 3.0.0以来エンコーディング "UTF-8-BOM"が読み取りで認められるようになり,もし存在すれば Byte Order Markを取り去る (これはMicrosoftのアプリケーションで作られたファイルでしばしばそうである).書き込みでもし BOMが必要なら(推奨されないが)明確に例えば writeBin(as.raw(c(0xef, 0xbb, 0xbf)), binary_con)やwriteChar("\ufeff", con, eos = NULL)のように書かれるべきである.

エンコーディング名 "utf8", "mac"そして "macroman"は可搬性が無い.そしてすべての現在の Rプラットフォームでサポートされていない. "UTF-8"は可搬性を持ち,そして"macintosh"は ‘Mac Roman’に対する公式(そして最も広範囲にサポートされている)名前である.

サポートされない変換の要求はエラーであり,コネクションが開かれた時報告される.要求された翻訳が不正な入力に対してなされた時正確に何が起こるかは一般的にはドキュメント化されていない.出力では結果は警告を伴い,エラーを含んでいる.入力ではこれは入力のすべてか一部分がエラーを含むことが最もありそうである.

現在のネイティブエンコーディングを Sys.getlocale("LC_CTYPE")から導くことは可能かもしれないが,すべての OSがそれを記録しているわけではない.

ブロック化

コネクションのブロックがファイル,url (既定で可), fifoとソケットコネクション(既定で否)に指定できるかどうか.

ブロック化モードでは,コネクションを使う関数は読み書きが終わるまで Rの評価器に復帰しない.非ブロック化モードでは操作は可能な限り速やかに復帰するので,入力ではどんな入力が利用可能であっても(無い可能性も)復帰し,出力に対しては書き込みが成功しようとしまいと復帰する.

関数 readLinesは二つのモードでは不完全な最終行に関して異なった動作をする:ヘルプ頁を見よ.

コネクションがブロック化モードにあっても,イベントループ,従って Rの GUI部分の操作,をブロックしないことが保証されるように努力される.これらは常に成功するわけではなく,例えば Rプロセス全体が Unixの DNS検索の間ブロックされる.

HTTP/FTP URLとソケットへの殆どの操作は options("timeout")により時間切れとされる可能性がある.これは無反応への時間切れであり,操作全体への時間切れではないことを注意する.時間切れはコネクションが開かれた時設定される (より正確には,そのタイプ– ‘http:’, ‘ftp:’ 又はソケット –の最後のコネクションが開かれた時).

Fifo

Fifoは既定でブロック化されない.これは Sのバージョン4に従い,恐らく最も自然であるが,幾つかの含意がある.特に非ブロック化 fifoコネクションを書き込み(だけ)に開くとある他のプロセスがその fifoを読込み中で無い限り失敗する.

Page 106: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

106 connections

fifoを読み書き双方で開くと(どのようなモードでも:fifoには追加だけが可能) fifoの両端を Rプロセスに連結し, file()に類似の機能を提供する.

クリップボード

fileは description = "clipboard"と共に使うことが出来るが,

Windowsではモード "r"と "w"だけである.

Unixではモード "r"だけである.これはX11 primary selection (http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txtを見よ)と secondary selectionを読み取る.これらは "X11_primary"と "X11_secondary"としても指定できる.殆どのシステムではクリップボードの選択(‘Edit’メニューからの ‘Copy’で使われる)は "X11_clipboard"として指定できる.

クリップボードが読み込みのために開かれると内容は即座にコネクションの内部保管庫にコピーされる.

(Windowsでは)クリップボードに書き込むとき,出力はコネクションが閉じられているかフラッシュされている時だけクリップボードにコピーされる.クリップボードに書き込まれるテキストには 32Kbの制限がある.これは例えば file("clipboard-128")に128Kbを与えることで増加できる.

クリップボードは Unicodeの幅広文字で動作するので,エンコーディングは期待されるようには動作しないかもしれない.

(Unixでは) X11 selectionのどれかに書き込みたいUnixユーザは xclip (http://sourceforge.net/projects/xclip/) または xsel (http://www.vergenet.net/~conrad/software/xsel/)を使って行うことが出来る.例えば primary selectionに対しては pipe("xclip -i", "w")とする.

OS Xのユーザはシステムのクリップボードに読み書きするために pipe("pbpaste")とpipe("pbcopy", "w")を使うことが出来る.

Note

Rのコネクションはバージョン4の Sをモデルにしている(Chambers, 1998を見よ).しかしながら R は S のモデルを遥かに超えている.例えば出力テキストコネクションとURL,圧縮とソケットコネクション.

Rの既定オープンモードはソケットコネクションを除いて "r"である.これは Sとは異なる.Sでは "r+"と同値であり "*"として知られている.

vsnprintf が必要な長さの出力を返さない(稀な)プラットフォームでは fifo, gzfile,bzfileそして xzfileコネクションに関するテキスト出力に対して一行の長さに 100,000バイトの制限がある:長すぎる行は警告と共に刈り詰められる.

References

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.

Ripley, B. D. (2001) Connections. R News, 1/1, 16–7. https://www.r-project.org/doc/Rnews/Rnews_2001-1.pdf

See Also

textConnection, seek, showConnections, pushBack.

コネクションを直接利用する関数は (テキストモード) readLines, writeLines, cat, sink,scan, parse, read.dcf, dput, dump そして (バイナリモード) readBin, readChar, writeBin,writeChar, loadそして save.

Page 107: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

connections 107

HTTP/FTP url, fifoそして socketConnectionがこの Rの構築でサポートされているかどうかを見るには capabilities.

コネクションまわりの gzipによる圧縮と解凍のラッパは gzcon.

options HTTPUserAgent, internet.infoそして timeoutはある種の URLコネクションに対するメソッドで使われる.

より多種類の圧縮・解凍法とデータ圧縮に関する参考文献は memCompress.

(Windowsでは)コンソールへ出力をフラッシュするには flush.consoleを見よ.

Examples

zz <- file("ex.data", "w") # 出力ファイルコネクションを開くcat("TITLE extra line", "2 3 5 7", "", "11 13 17", file = zz, sep = "\n")cat("One more line\n", file = zz)close(zz)readLines("ex.data")unlink("ex.data")

zz <- gzfile("ex.gz", "w") # 圧縮ファイルcat("TITLE extra line", "2 3 5 7", "", "11 13 17", file = zz, sep = "\n")close(zz)readLines(zz <- gzfile("ex.gz"))close(zz)unlink("ex.gz")

zz <- bzfile("ex.bz2", "w") # bzip2 で圧縮したファイルcat("TITLE extra line", "2 3 5 7", "", "11 13 17", file = zz, sep = "\n")close(zz)print(readLines(zz <- bzfile("ex.bz2")))close(zz)unlink("ex.bz2")

## ファイルを読み書きのために開く例Tfile <- file("test1", "w+")c(isOpen(Tfile, "r"), isOpen(Tfile, "w")) # 共に TRUEcat("abc\ndef\n", file = Tfile)readLines(Tfile)seek(Tfile, 0, rw = "r") # 最初にリセットreadLines(Tfile)cat("ghi\n", file = Tfile)readLines(Tfile)close(Tfile)unlink("test1")

## 同じことを匿名ファイルに行うことが出来る.Tfile <- file()cat("abc\ndef\n", file = Tfile)readLines(Tfile)close(Tfile)

## Not run: ## fifo の例 -- OS が fifo をサポートしていても立ち往生する可能性if(capabilities("fifo")) {

zz <- fifo("foo-fifo", "w+")writeLines("abc", zz)print(readLines(zz))close(zz)

Page 108: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

108 connections

unlink("foo-fifo")}## End(Not run)# (Unixでは)

## Unix でのパイプの使用例

# 現在のディレクトリのリスティングを読むreadLines(pipe("ls -1"))

# 末尾のコンマを除く.以下を仮定する

## Not run: % cat data2_450, 390, 467, 654, 30, 542, 334, 432, 421,357, 497, 493, 550, 549, 467, 575, 578, 342,446, 547, 534, 495, 979, 479## End(Not run)# それから次のように読むscan(pipe("sed -e s/,$// data2_"), sep = ",")

# 出力中の小数点をカンマに変える:write.table も見よ# R 文字列と(恐らく)シェル命令は二重引用化が必要zz <- pipe(paste("sed s/\\\\./,/ >", "outfile"), "w")cat(format(round(stats::rnorm(48), 4)), fill = 70, file = zz)close(zz)file.show("outfile", delete.file = TRUE)

## Not run:## finger daemon が走る計算機に対する例

con <- socketConnection(port = 79, blocking = TRUE)writeLines(paste0(system("whoami", intern = TRUE), "\r"), con)gsub(" *$", "", readLines(con))close(con)

## End(Not run)

## Not run:## ブロック化されていないソケット経由で通信する二つの R プロセス# R プロセス 1con1 <- socketConnection(port = 6011, server = TRUE)writeLines(LETTERS, con1)close(con1)

# R プロセス 2con2 <- socketConnection(Sys.info()["nodename"], port = 6011)# ブロック化されていないので,入力にループが必要かもしれないreadLines(con2)while(isIncomplete(con2)) {

Sys.sleep(1)z <- readLines(con2)if(length(z)) print(z)

}close(con2)

## エンコーディングの使用の例

Page 109: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Constants 109

# ファイルを UTF-8 で書くcat(x, file = (con <- file("foo", "w", encoding = "UTF-8"))); close(con)# 'Windows Unicode' ファイルを読むA <- read.table(con <- file("students", encoding = "UCS-2LE")); close(con)

## End(Not run)

Constants Built-in Constants

Description

Rに組み込まれている定数.

Usage

LETTERSlettersmonth.abbmonth.namepi

Details

Rは少数の組み込み定数を持つ.以下の定数が使用可能である:

• LETTERS: 26の大文字ローマンアルファベット;• letters: 26の小文字ローマンアルファベット;• month.abb: 英語月名の3文字省略形;• month.name: 英語月名;• pi: 円周率.

これらは対応する値を持つ変数として基本名前空間に移植されている.

References

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

See Also

data, DateTimeClasses.

文字定数の構文解析については Quotes,数値定数については NumericConstants.

Examples

## John Machin (ca 1706) は pi - 4*(4*atan(1/5) - atan(1/239)) の## 第二項のテイラー展開を使い pi を小数点以下100桁以上計算した

## ユーザの現在のロケールでの月名format(ISOdate(2000, 1:12, 1), "%B")format(ISOdate(2000, 1:12, 1), "%b")

Page 110: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

110 Control

contributors R Project Contributors

Description

Rの人名録で Rの発展に重要な貢献をした人物を紹介する.

Usage

contributors()

Control Control Flow

Description

これらは R言語の基本的な制御フローである.各種の Algol風の言語における制御文とほぼ同様に動作する.これらは予約語(reserved)である.

Usage

if(cond) exprif(cond) cons.expr else alt.expr

for(var in seq) exprwhile(cond) exprrepeat exprbreaknext

Arguments

cond 長さ1の論理値ベクトルで NAでない.長さが1より大きな条件は警告付きで受け入れられるが,最初の要素しか使われない.他の型はもし可能ならば論理値に強制変換され,クラスは無視される.

var 一つの変数に対する構文的な名前.

seq ベクトルや pairlistまたは NULLへと評価される表現式.因子値は文字列ベクトルに強制変換される.

expr, cons.expr, alt.expr

形式的な意味での表現式.これは単純な表現式であるか,いわゆる複合表現式であり,通常 { expr1 ; expr2 }の形を持つ.

Page 111: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Control 111

Details

breakは for, whileまたは repeatループを中断する;制御は最奥のループの外の最初の文に移る. nextは現在の反復を停止し,ループ変数を進める. breakと nextは入れ子になった最奥のループに適応される.

文を波括弧({ .. })で囲むことを忘れるのはよくある間違いである.例えば if(..) やfor(....) の後である.特に,キーボードや source経由で if ... else構文を挿入する際,構文エラーを避けるため }と elseの間に新行を入れるべきではない.この理由のため,ひとつの(少々極端な)防御的なプログラミングは常に波括弧を入れることである.例えば if節に対してである.

forループ中の The seqはループの開始時に評価される.それを後で変更してもループに影響を与えない.もし seqが長さゼロであればループ本体はスキップされる.さもなければ,変数 varには seqの各要素が順に付値される.ループ本体中で varを変更することができるが,これは次の繰り返しに影響を与えない.ループが終了する時,変数 varはその最後の値を持つ変数として残る.

Value

ifは評価された表現式を値として返す.もしくは値がなければ (これは elseが無いときに起き得る) NULLを不可視返り値として返す.

for, whileそして repeatは NULLを不可視返り値として返す.forは varを最後に使われた seqの値に設定する.もしくはそれが長さゼロなら NULLとする.

breakと nextはループ中で制御を移行するため値を返さない.

References

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

See Also

Rの基本的な構文と演算子については Syntax,丸括弧と波括弧については Paren.

制御フローの他の仕組みについては ifelse, switch.

Examples

for(i in 1:5) print(1:i)for(n in c(2,5,10,20,50)) {

x <- stats::rnorm(n)cat(n, ": ", sum(x^2), "\n", sep = "")

}f <- factor(sample(letters[1:5], 10, replace = TRUE))for(i in unique(f)) print(i)

Page 112: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

112 crossprod

copyright Copyrights of Files Used to Build R

Description

Rは ‘GNU Public License’の下でリリースされている:詳細は licenseを見よ.このライセンスはあなたが Rを使う権利を述べている.コピーライトは知的権利の所有に関わるもので,使われているソフトウェアの幾つかはコピーライトを明確に述べる: ‘詳細’節を見よ.我々はこれらの人々と貢献者 (contributorsを見よ)に,彼らの作品が使えることに対して感謝する.

Details

ファイル ‘R_HOME/COPYRIGHTS’はコピーライトを詳細にリストしている.

crossprod Matrix Crossproduct

Description

引数として行列 xと yをあたえた時,行列のクロス積を返す.これは形式的には呼び出し t(x) %*% y (crossprod)又は x %*% t(y) (tcrossprod)に等しい(が少し速い).

Usage

crossprod(x, y = NULL)

tcrossprod(x, y = NULL)

Arguments

x, y 数値又は複素数値行列(又はベクトル): y = NULLは xと同じ行列とされる.文脈に応じてベクトルは1行又は 1列の行列と見做される.

Value

倍精度実数又は複素数行列で,xと yから取られた適当な dimnamesを持つ.

Note

xや yが行列でなければ,1列又は1行だけの行列として扱われるが,それらの namesは普通 dimnamesに使われない.従って現在最後の例は空の次元名を持つ.

R 3.2.0以来,同じ状況ではこれらの行列積(また %*%)はベクトルを同じ列又は行だけの行列により柔軟に変えるのでより多くのケースが許される.

References

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

Page 113: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Cstack_info 113

See Also

%*%と外積 %o%.

Examples

(z <- crossprod(1:4)) # = sum(1 + 2^2 + 3^2 + 4^2)drop(z) # スカラx <- 1:4; names(x) <- letters[1:4]; xtcrossprod(as.matrix(x)) # isidentical(tcrossprod(as.matrix(x)),

crossprod(t(x)))tcrossprod(x) # 次元名なし

m <- matrix(1:6, 2,3) ; v <- 1:3; v2 <- 2:1stopifnot(identical(tcrossprod(v, m), v %*% t(m)),

identical(tcrossprod(v, m), crossprod(v, t(m))),identical(crossprod(m, v2), t(m) %*% v2))

Cstack_info Report Information on C Stack Size and Usage

Description

(もし可能ならば)Cのスタックサイズと使用量の情報を報告する.

Usage

Cstack_info()

Details

殆どのプラットフォームでは Cのスタック情報は¥Rが初期化されるとき記録されスタックのチェックに使われる.もしこの情報が利用できない時は sizeは NAを返し,スタックのチェックは行われない.

スタックの基礎アドレスに関する情報はWindows, Linux, OS Xそして FreeBSDでは正確と考えられるが,他のプラットフォームでは発見法的なものが使われる.これは少々不正確かもしれず,現在の使用量は負と推定されるかもしれない. (この発見法は,スタックのベースが正確とは考えられていないプラットフォームでは Rの埋め込み使用では使われない.)

‘evaluation depth’は現在評価中の入れ子のR表現式の数である.これは options("expressions")で制御される限界を持つ.

Value

整数ベクトル.これは以下のような名前付き要素を持つ

size (バイト単位の)スタック数,またはそれが不明なら NA.

current (バイト単位の)推測される現在の使用量.NAかもしれない.

direction 1 (スタックは減少している,普通のケース)または -1 (スタックは増加している).

eval_depth 現在の評価深度(Cstack_info)呼び出しのための二つを含む.

Page 114: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

114 cumsum

Examples

Cstack_info()

cumsum Cumulative Sums, Products, and Extremes

Description

引数の要素の累積した和,積,最小値又は最大値が要素であるベクトルを返す.

Usage

cumsum(x)cumprod(x)cummax(x)cummin(x)

Arguments

x 数値又は複素数(cumminや cummaxでは無し)オブジェクト,もしくはそうしたものの一つに強制変換出来るオブジェクト.

Details

これらは総称的関数である:それらに対するメソッドを個別に又は Mathグループ総称的に定義できる.

Value

xと同じ(強制変換後の)長さと型のベクトル.但し cumprodは整数入力に対して数値ベクトルを返す (*との一貫性のため).名前は保存される.

x中の NA値は返り値の対応する,そしてそれ以降の要素を NAにする. cumsumの桁溢れの場合も含む(警告が出る).

S4メソッド

cumsum と cumprod は S4 総称的関数である:それらに対するメソッドを個別に,又はMathグループ総称的に書くことが出来る. cummaxと cumminは個別に S4総称的関数である.

References

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

Examples

cumsum(1:10)cumprod(1:10)cummin(c(3:1, 2:0, 4:2))cummax(c(3:1, 2:0, 4:2))

Page 115: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

curlGetHeaders 115

curlGetHeaders Retrieve Headers from URLs

Description

http://, ftp://, https://そして ftps://のようなサポートされるプロトコルに対するURLのヘッダーを取得する.すべてのプラットフォームではサポートされていないオプションの関数.

Usage

curlGetHeaders(url, redirect = TRUE, verify = TRUE)

Arguments

url URLを指定する文字列.

redirect 論理値:リダイレクションすべきか.

verify 論理値:認証は正しいとされそのホストに適用すべきか?

Details

これは curl -I -L又は curl -Iが報告するものを報告する.ftp:// URLに対しては‘ヘッダー’はデータの転送前のクライアントとサーバー間の会話の記録である.

500のヘッダー行だけが報告される:20のリダイレクションの制限があるのでこれは十分であろう(そして20ですら問題を指摘するかもしれない).

これは接続の時間切れに対して getOption("timeout") を使う:これは既定で60秒である.これは中断されないのでもっと短い値を使いたくなるかもしれない.

サーバーとのやり取りのすべての詳細を見るには options(internet.info = 1)と設定せよ.

HTTP[S] サーバーはヘッダーの読み取りへの要求等を拒否することが出来る:これは405という statusになる.

安全な URL (特にWindows上で)に関する可能な事柄については download.fileを見よ.

認証を確認しないというセキュリティのリスクがあるかもしれないが,ヘッダーだけが取得されるので僅かである.普通ブラウザーで URLを眺めれば問題が何であるかが明らかになる (そしてこれは機械依存であるかもしれない).

Value

整数値の属性 "status" (the last-received ‘status’ code)を持つ文字列.もしリダイレクトされれば,これは訪問されたすべての URLに対するヘッダーを含む.

‘status’コードの解釈に対しては https://en.wikipedia.org/wiki/List_of_HTTP_status_codes そして https://en.wikipedia.org/wiki/List_of_FTP_server_return_codes を見よ.成功裏に行われた FTPコネクションは普通状態 250か 350を持つ.

See Also

これがサポートされているかどうかを見るには capabilities("libcurl").

options HTTPUserAgentそして timeoutが使われる.

Page 116: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

116 cut

Examples

## インターネットアクセスが必要,結果は変わるcurlGetHeaders("http://bugs.r-project.org") ## これは https:// にリダイレクトされるcurlGetHeaders("https://httpbin.org/status/404") ## 状態を返すcurlGetHeaders("ftp://cran.r-project.org")

## Not run: ## 常に利用できるわけではないサイト:curlGetHeaders("ftps://test.rebex.net/readme.txt")

## End(Not run)

cut Convert Numeric to Factor

Description

cutは xの範囲を区間に分割し x中の値をそれが入る区間に応じてコード化する.最左翼の区間が水準 1で,その次が 2等になる.

Usage

cut(x, ...)

## Default S3 method:cut(x, breaks, labels = NULL,

include.lowest = FALSE, right = TRUE, dig.lab = 3,ordered_result = FALSE, ...)

Arguments

x 分割で因子に変換されるべき数値ベクトル.

breaks 2以上のユニークな分点の数値ベクトルか又は xが仕分けされる区間の数を与える2以上の一つの数.

labels 結果のカテゴリーの水準に対するラベル.既定ではラベルは "(a,b]"という区間表記を用いて構成される.もし labels = FALSEならば,因子の代わりに単純な整数コードが返される.

include.lowest 論理値.最小(right = FALSEならば最大)の分点値 ‘x[i]’を含めるべきかどうかを指示する.

right 論理値.区間が右に閉じている(そうして左に開いている)べきかどうかを指示する.又はその逆.

dig.lab ラベルが与えられない時使われる整数.これは分点数を決めるときの桁数を決めるのに使われる.

ordered_result 論理値:結果は順序付き因子にすべきか?

... 他のメソッドへ・から引き渡される追加引数.

Page 117: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

cut 117

Details

breaksが一つの数値で指定された時は,データの範囲が同じ長さの breaks個の部分に分けられ,それから極値が分割区間に入るように両極端が 0.1%移動される. (もし xが定数ベクトルなら等しい長さの区間が作られ,そのうちひとつが単一の値を含む.)

もし labelsパラメータが指定されると,その値は因子水準の名前に使われる.もしなければ因子水準は right = TRUE に対しては "(b1, b2]", "(b2, b3]" 等とされ,もしright = FALSEならば "[b1, b2)", . . .等となる.この場合,dig.labは数値 b1, b2, . . .を整形するのに使われるべき最小の桁数を指示する.もし必要なら任意の端点の対を区別するため,大きな値(最大 12)が使われる:もしこれが失敗すると "Range3"のようなラベルが使われる.整形は formatCを使ってなされる.

既定のメソッドは数値ベクトル breaksをソートするが,他のメソッドは labelsがソート後の区間に対応していることを要求しない.

R 3.2.0からラベルが labels = NULLに対して構成される場合は getOption("OutDec")が考慮される.

Value

labels = FALSEでなければ因子が返される.もし labels = FALSEならば水準コードの整数ベクトルが返される.

breaksの範囲を超える値は NaNと NAになるため, NAとコードされる.

Note

table(cut(x, br))よりも hist(x, br, plot = FALSE)がより効率的でメモリー消費も少ない. cut(*, labels = FALSE)よりも findInterval()がより効率的.

References

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

See Also

グループ因子に従って分割するには split; factor, tabulate, table, findInterval.

(長さではなく)ほぼ個数が等しくなるように分点を選ぶ quantile.

骨子版 .bincode.

Examples

Z <- stats::rnorm(10000)table(cut(Z, breaks = -6:6))sum(table(cut(Z, breaks = -6:6, labels = FALSE)))sum(graphics::hist(Z, breaks = -6:6, plot = FALSE)$counts)

cut(rep(1,5), 4) #-- ダミーtx0 <- c(9, 4, 6, 5, 3, 10, 5, 3, 5)x <- rep(0:8, tx0)stopifnot(table(x) == tx0)

table( cut(x, b = 8))table( cut(x, breaks = 3*(-2:5)))table( cut(x, breaks = 3*(-2:5), right = FALSE))

Page 118: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

118 cut.POSIXt

##--- 分点を外れる値がある:table(cx <- cut(x, breaks = 2*(0:4)))table(cxl <- cut(x, breaks = 2*(0:4), right = FALSE))which(is.na(cx)); x[is.na(cx)] #-- 最初の9個の値 0which(is.na(cxl)); x[is.na(cxl)] #-- 最後の5個の値 8

## ラベルの構成:y <- stats::rnorm(100)table(cut(y, breaks = pi/3*(-3:3)))table(cut(y, breaks = pi/3*(-3:3), dig.lab = 4))

table(cut(y, breaks = 1*(-3:3), dig.lab = 4))# 余計な桁はここでは"無害"table(cut(y, breaks = 1*(-3:3), right = FALSE))#- 同じ,なぜなら正確な整数はない!

## 既定の dig.lab では混乱を避けられない場合もある:aaa <- c(1,2,3,4,5,2,3,4,5,6,7)cut(aaa, 3)cut(aaa, 3, dig.lab = 4, ordered = TRUE)

## 分点を取り出す一つの方法labs <- levels(cut(aaa, 3))cbind(lower = as.numeric( sub("\\((.+),.*", "\\1", labs) ),

upper = as.numeric( sub("[^,]*,([^]]*)\\]", "\\1", labs) ))

cut.POSIXt Convert a Date or Date-Time Object to a Factor

Description

暦日・時刻オブジェクトに適用される cutのメソッド.

Usage

## S3 method for class 'POSIXt'cut(x, breaks, labels = NULL, start.on.monday = TRUE,

right = FALSE, ...)

## S3 method for class 'Date'cut(x, breaks, labels = NULL, start.on.monday = TRUE,

right = FALSE, ...)

Arguments

x クラス "POSIXt"か "Date"を継承するオブジェクト.

breaks 分点のベクトル,又は x が仕分けされる区間数を与える数,又は区間の指定で "sec", "min", "hour", "day", "DSTday", "week", "month","quarter"又は "year"でオプションで整数化空白が先頭に付くか "s"が後に付く. ("Date"オブジェクトに対しては区間指定 "day", "week","month", "quarter"そして "year"だけが許される.)

Page 119: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

data.class 119

labels 結果のカテゴリーの水準のラベル.既定では,ラベルは区間の左端から作られる (これは既定値 right ではその区間に入る).もしlabels = FALSE ならば,因子の代わりに単純な整数コードが返される.

start.on.monday

論理値.もし breaks = "weeks"ならば,一週間は月曜日に始まるか日曜日に始まるか?

right, ... 他のメソッドに・から引き渡される引数.

Details

rightに対する既定動作は既定メソッドとは異なることを注意する.include.lowest = TRUEの使用は日付範囲両端を含める.

breaks = "quarter"は3ヶ月毎の区間を作る.必要に応じて1月1日,4月1日,7月1日又は10月1日(min(x)に基づく)から始まる.

ベクトル breaksは使用前にソートされる: labelsはソートされたベクトルに対応すべきである.

Value

labels = FALSEでない限り因子が返される. labels = FALSEならば整数の水準コード.

breaksの範囲外に入る値は NA値を持つため NAとコードされる.

See Also

seq.POSIXt, seq.Date, cut

Examples

## 10週周期のランダムデータcut(ISOdate(2001, 1, 1) + 70*86400*stats::runif(100), "weeks")cut(as.Date("2001/1/1") + 70*stats::runif(100), "weeks")

# 標準はすべて真夜中が一日の始めとするが# それを前日の最後と解釈する人もいる ...tm <- seq(as.POSIXct("2012-06-01 06:00"), by = "6 hours", length.out = 24)aggregate(1:24, list(day = cut(tm, "days")), mean)# 真夜中を前日に含むバージョン:aggregate(1:24, list(day = cut(tm, "days", right = TRUE)), mean)

data.class Object Classes

Description

任意の Rオブジェクトのクラスを決定する.

Usage

data.class(x)

Page 120: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

120 data.frame

Arguments

x Rオブジェクト.

Value

xのクラスを与える文字列.

クラスはそれが NULLでなければ class属性の最初の要素である.もしくはそれが NULLでなければオブジェクトの次元属性から導かれる.もしくは mode(x)である.

簡単に言えば data.class(x)はメソッドの選択適用に典型的に有用な物を返す.(もしくは基本的な構成関数が既にか恐らく結局はクラス属性として付与するであろうもの.)

Note

互換性の理由から,上の規則に対する例外が一つある: xが integerなら data.class(x)の結果は xがクラスを持っていても "numeric"とされる.

See Also

class

Examples

x <- LETTERSdata.class(factor(x)) # クラス属性を持つdata.class(matrix(x, ncol = 13)) # 次元属性を持つdata.class(list(x)) # mode(x) と同じdata.class(x) # mode(x) と同じ

stopifnot(data.class(1:2) == "numeric") # 互換性"規則"

data.frame Data Frames

Description

この関数はデータフレームを作る.これは行列とリストの多く性質を共有する緊密に組み合わされた変数の集まりで,殆どの Rのモデリングソフトウェアにより基本的なデータ構造として用いられている.

Usage

data.frame(..., row.names = NULL, check.rows = FALSE,check.names = TRUE, fix.empty.names = TRUE,stringsAsFactors = default.stringsAsFactors())

default.stringsAsFactors()

Page 121: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

data.frame 121

Arguments

... これらの引数は形式 valueまたは tag = valueを取る.成分名は(もしあれば)タグか逆構文解析された変数名自体から作られる.

row.names NULL,一つの整数,行名として使われる列を指定する文字列,もしくはデーラフレームの行名を与える文字列又は整数ベクトル.

check.rows もし TRUEなら,行は長さと名前が一貫しているかチェックされる.

check.names 論理値.もし TRUEならばデータフレーム中の変数の名前は構文的に適正で重複していないことを保証するために検査される.もし必要ならそれらはそうなるように補正される (make.namesを使い).

fix.empty.names

logical indicating if arguments which are “unnamed” (in the sense of not beingformally called as someName = arg) get an automatically constructed name orrather name "". Needs to be set to FALSE even when check.names is false if ""names should be kept.

stringsAsFactors

論理値:文字列ベクトルは因子に変換されるべきか? ‘工場出荷’既定値は TRUEであるが,しかしこれは設定 options(stringsAsFactors = FALSE)で変更できる.

Details

データフレームはユニークな行名と同じ列数の変数のリストでクラス "data.frame"を持つ.もし変数が皆無なら行名が行数を決める.

列名は空であってはならず,空の名前を使えば未サポートの結果が生じる.重複した列名は許されるが,そうしたデータフレームを生成するには data.frame に対してcheck.names = FALSEを使う必要がある.しかしながらすべてのデータフレームへの操作が重複した列名を保つとは限らない:例えば行列風の部分操作は結果中の列名がユニークであることを強制する.

data.frameは as.data.frame(optional = TRUE)を呼び出し,その変数の各々を一つのデータフレームに変換する.これは総称的関数であるから,引数をそれらのクラスに応じて変更するメソッドを書くことが出来る:R はそうしたメソッドを多く持つ.data.frameに渡された文字列変数は Iで保護されるか引数 stringsAsFactorsが偽でない限り因子の列に変換される.もしリスト,データフレーム,行列が data.frame に渡されると,それらはその成分や列の各々が個別の引数として渡されたかのように振る舞う(クラス "model.matrix"の行列と Iで保護された物を除く).

data.frame に渡される引数は同じ数の列を持たなければならないが,原子的なベクトル(is.vectorを見よ),因子そして Iで保護された文字列は必要なら何度でもリサイクル使用される (リスト引数の要素を含む).

もし列数が data.frameの引数として与えられなければ,列名は適切な名前を持つ最初の成分から取られる,例えば名前付きベクトル,列名を持つ行列やデータフレームである. (もしその成分がそれから零細クルされると,名前は警告と共に捨て去られる.)もし row.namesが NULLとして与えられるか適当な成分が見つからなければ,列名は1から始まる整数列とされる (そしてそうした列名は‘自動的’とされ,as.matrixで保護されない).

もし行名が長さ1として与えられデータフレームが単一の列を持てば, row.namesは列名ではなく行名(名前もしくは数)を指定するとされる.

名前は Iで保護されないベクトル入力からは取り除かれる.

default.stringsAsFactorsはユーティリティで getOption("stringsAsFactors")を取り,結果が TRUE又は FALSEになる(もしくは値が NULLでなければエラーを生じる).

Page 122: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

122 data.frame

Value

データフレームはその列が異なった型(数値,論理値,因子そして文字列)であり得る行列風の構造である.

データフレームの名前がどのように構成されるかは簡単ではなく,この節の残りは基本的な話のみである.もし引数が全て名前を持ち単純なオブジェクト(リスト,データフレームの行列で無い)でなければ引数の名前が列の名前になる.名前のない単純なオブジェクトに対しては引数を逆構文解析版が名前として使われる(囲み I(...) は取り除かれる).名前付きの行列/リスト/データフレーム引数が二つ以上の名前付き引数を持てば,列の名前は引数の名前にドットと引数内の列名が続く:もし引数が名前無しなら引数の列名が使われる.名前付きか無しの行列/リスト/データフレーム引数が単一の列を含めば,結果の列名は引数中の列名になる.最後に check.names = FALSEでない限り,名前は重複がなく構文的に正当であるように補正される.

Note

Rの 2.4.0以前では row.namesは文字列でなければならなかった; row.names引数として文字列を与えるというそうした Rのバージョンとの一貫性を保つためである.

References

Chambers, J. M. (1992) Data for models. Chapter 3 of Statistical Models in S eds J. M. Chambersand T. J. Hastie, Wadsworth & Brooks/Cole.

See Also

I,plot.data.frame,print.data.frame,row.names, names (列名に対して),部分抽出メソッドに対して [.data.frame,data.frameに対するグループメソッドは Math.data.frame等, read.table, make.names.

Examples

L3 <- LETTERS[1:3]fac <- sample(L3, 10, replace = TRUE)(d <- data.frame(x = 1, y = 1:10, fac = fac))## 同じだが自動的な列名:data.frame(1, 1:10, sample(L3, 10, replace = TRUE))

is.data.frame(d)

## I() を使い因子に変換しない:(dd <- cbind(d, char = I(letters[1:10])))rbind(class = sapply(dd, class), mode = sapply(dd, mode))

stopifnot(1:10 == row.names(d)) # {強制変換}

(d0 <- d[, FALSE]) # 0列,10行のデータフレーム(d.0 <- d[FALSE, ]) # <0 行>データフレーム (3個の名前付き列)(d00 <- d0[FALSE, ]) # 0列,0行のデータフレーム

Page 123: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

data.matrix 123

data.matrix Convert a Data Frame to a Numeric Matrix

Description

データフレーム中のすべての変数を数値モードに変換しそれを行列の列にまとめて得られる行列を返す.因子と順序付き因子はそれらの内部的コードに置き換えられる.

Usage

data.matrix(frame, rownames.force = NA)

Arguments

frame その成分が論理値ベクトル,因子又は数値ベクトルであるデータフレーム.

rownames.force 論理値で,結果の行列が(NULLではなく)文字列の行名を持つべきかどうかを指示する.もしデータフレームが‘自動的’な行名をもつか行数ゼロのデータフレームならば既定 NAでは NULLの行名を持つ.

Details

論理値と因子の列は整数に変換される.数値でない(is.numeric によれば)他の列はas.numericか,S4オブジェクトに対しては as(, "numeric")でで数値に変換される.もしすべての列が整数(強制変換後)ならば結果は整数行列になる.さもなければ数値(倍精度実数)行列になる.

Value

frameがクラス "data.frame"を継承していれば, frameと同じ次元を持つ整数又は数値行列で,次元名は row.names (もしくは rownames.forceに応じて NULL)と namesから取られる.

さもなければ as.matrixの結果.

Note

データフレームに対する既定動作は R < 2.5.0では異なっており,常に文字列行名を与えていた.

References

Chambers, J. M. (1992) Data for models. Chapter 3 of Statistical Models in S eds J. M. Chambersand T. J. Hastie, Wadsworth & Brooks/Cole.

See Also

as.matrix, data.frame, matrix.

Page 124: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

124 date

Examples

DF <- data.frame(a = 1:3, b = letters[10:12],c = seq(as.Date("2004-01-01"), by = "week", len = 3),stringsAsFactors = TRUE)

data.matrix(DF[1:2])data.matrix(DF)

date System Date and Time

Description

現在のシステムの日付と時刻の文字列を返す.

Usage

date()

Value

文字列は "Fri Aug 20 11:11:00 1999"の形を持つ,つまり POSIX上の固定書式 ctimeを保証するため長さは24である.タイムゾーンとサマータイムが考慮されるが,結果には示されない.

日と月の省略名はロケールによらず英語である.

References

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

See Also

Sys.Dateと Sys.time;日付と時刻を表現するオブジェクトに対して Dateと DateTimeClasses.

Examples

(d <- date())nchar(d) == 24

## 現在のロケールでの類似したものformat(Sys.time(), "%a %b %d %H:%M:%S %Y")

Page 125: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Dates 125

Dates Date Class

Description

暦日を表すクラス "Date"の記述.

Usage

## S3 method for class 'Date'summary(object, digits = 12, ...)

Arguments

object 要約されるオブジェクト.

digits 計算に対する有効桁数.

... 他のメソッドへ・から引き渡されるその他の引数.

Details

日付は 1970-01-01からの日数で表される.負の数はそれ以前を表す.これらは,大昔それが使われていなかったとしても,常に以下の現在のグレゴリオ暦の規則(1752年に大英帝国とその植民地で採用された)に従いプリントされる.

日付は整数であるとされるが,内部的表現では強制されない.分数の日付はプリント時に無視される.分数の日付は meanメソッドや,加減算で生成することが出来る(Ops.Dateを参照).

プリントメソッドは options("max.print")を尊重する.

See Also

現在の日付は Sys.Date.

"Date"オブジェクトに対する演算には Ops.Date.

文字列への・からの変換には format.Date.

プロットには axis.Dateと hist.Date.

便利な抽出関数は weekdays.

ユーティリティ操作 seq.Date, cut.Date, round.Date.

暦日時刻クラスは DateTimeClasses.

Examples

(today <- Sys.Date())format(today, "%d %b %Y") # 月を単語として(tenweeks <- seq(today, length.out=10, by="1 week")) # 次の10日weekdays(today)months(tenweeks)as.Date(.leap.seconds)

Page 126: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

126 DateTimeClasses

DateTimeClasses Date-Time Classes

Description

暦日と時刻を表すクラス "POSIXlt"と "POSIXct"の説明.

Usage

## S3 method for class 'POSIXct'print(x, ...)

## S3 method for class 'POSIXct'summary(object, digits = 15, ...)

time + zz + timetime - ztime1 lop time2

Arguments

x, object プリントもしくは要約されるべき日付-時刻クラスの一つからのオブジェクト.

digits 計算に対する有効桁数:最小の重要な時刻を正確に表現するのに必要なだけ大きい必要がある.

... 他のメソッドへ・から引き渡される追加引数.

time 日付-時刻オブジェクト

time1, time2 日付-時刻オブジェクトもしくは文字列ベクトル. (文字列ベクトルはas.POSIXctにより強制変換される.)

z (秒単位の)数値ベクトル

lop 次の一つ ==, !=, <, <=, >または >=.

Details

基本になる日付/時刻クラスが二つある.クラス Class "POSIXct"は1970年(UTCタイムゾーンの)初めからの(符号付き)秒数を数値ベクトルとして表現する.クラス "POSIXlt"は以下のベクトルの名前付きリスト

sec 0–61: 秒.

min 0–59: 分.

hour 0–23: 時.

mday 1–31: 月始めからの日数.

mon 0–11: 新年以来の月数.

year 1900年以来の年数.

wday 日曜日から始まる週の日数 0–6.

yday 0–365: 一年の日数.

Page 127: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

DateTimeClasses 127

isdst DST(Day-Saving Time,サマータイム)のフラグ.サマータイム中なら正,そうでなければゼロ,未知なら負.

zone (オプション.)その時に実効的なタイムゾーンの略称:未知なら "" (しかし ""はまた UTCに対しても使われる可能性がある).

gmtoff (オプション.) GMTからの秒数のオフセット:正値は子午線の東.未知ならば普通 NAであるが, 0が未知を表すこともある.

(最後の二つの成分は UTC 時刻では不在で,プラットフォーム依存である: BSD やglibcがサポートする(Linuxと OS Xを含む)プラットフォームや, Rと共に出荷されるtzcodeの移植を使う(Windowsを含む)ものを含む.しかしそれらは必ずしも設定されていない.)多くのメソッド (length(x), print()そして str)が "POSIXct"のような抽象的な日付-時刻ベクトルに適用されるため,内部的なリスト構造はいくらか隠蔽されている.これらのクラスは ‘calendar time’ (time_tデータ型)と ‘local time’ (または破損した時刻,struct tmデータ型)の POSIX/C99構成に対応し,そこから名称を受け継いでいる."POSIXlt"の成分は,secと zoneを除いて整数ベクトルである.

"POSIXct"はデータフレームに含むのにより便利である.そして "POSIXlt"はより可読性が高い.仮想的なクラス "POSIXt"が存在し,二つのクラスはそれを継承する:これは二つのクラスを混ぜあわせるために減算等の操作を許すのに使われる.

"POSIXlt"の成分 wdayと ydayは情報用で,暦日への変換では使われない.しかしながら isdstはサマータイムの最後における時間を区別するために必要とされる:典型的には午前1時から2時が2回,最初にサマータイム中,次に標準的な時間中,に起きる.

双方のクラスに対して論理比較と幾つかの算術演算が利用できる.日付-時間オブジェクトから秒数を加算,減産できるが,二つの日付-時間クラスを加えることはできない.二つの日付-時間クラスの差は difftimeの利用と同値である.特にタイムゾーンが指定されない限り,"POSIXlt"はこうした演算では現在のタイムゾーン中にあると解釈されることを注意しよう.

"POSIXlt"オブジェクトはしばしば属性 "tzone"を持つ.これは長さ3の文字列ベクトルで,TZ環境変数からのタイムゾーン名,基本タイムゾーン名,そしてもうひとつの(サマータイム)タイムゾーン名を与える.時折これは唯の長さ1であることがあり,time zone名を与える.

不幸なことに変換はタイムゾーンと閏秒の操作で複雑である (26日間がこれまで86401秒の長さであった.執筆時の最後は2015年に付け加えられた.余分の秒の時間はオブジェクト .leap.secondsにある.)これの詳細は可能ならばOSのサービスに委託されている.幾つかの稀なシステムは閏秒を使っていたようだが,すべての現在の既知のプラットフォームはそれらを無視する(POSIXが要請するように).これは構築時に検出・訂正されるので, Rが使う "POSIXct"時間はいかなるプラットフォームでも閏秒を含まない.

"POSIXlt" オブジェクト上で c を使うとそれらは現在のタイムゾーンに変換され,"POSIXct" オブジェクト上ではすべての "tzone" 属性を捨てさる(たとえそれらがすべて同じタイムゾーンを使っていても).

幾つかの時刻は特別な問題を持つ.まず,閏秒が無視され, "2005-12-31 23:59:60"のような実時間は (おそらく)次の秒として扱われる.しかしながら,これらは R では決して起こらないであろうし,入力としてもありそうもない.次に,幾つかの OS では"1969-12-31 23:59:59 UTC"に関して POSIX/C99標準が問題を持つ.これは暦日としては -1 であり,これはそうした OS ではエラーコードの一つとして使われている.従って as.POSIXct("1969-12-31 23:59:59", format = "%Y-%m-%d %H:%M:%S", tz = "UTC")は NA を与えるかもしれず,故に as.POSIXct("1969-12-31 23:59:59", tz = "UTC") は"1969-12-31 23:59:00" を与える.他の OS (Windows で使われている R のコードを含む)は別個にエラーを報告し,従ってこの時刻を適正として処理できる.

プリントメソッドは options("max.print")を尊重する.

Page 128: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

128 DateTimeClasses

1秒以下の正確さ

クラス "POSIXct"と "POSIXlt"は分数秒を表現できる. (二つの形式間での分数の変換は正確ではないかもしれないが,マイクロ秒以上の正確さを持つであろう.)

分数秒は options("digits.secs")が設定されている時だけプリントされる: strftimeを見よ.

適正な時間範囲

"POSIXlt"クラスは非常に広い時刻範囲を表現できる(数百万年)が,そうした時刻はあるタイムゾーンを参照してのみ解釈できる.

タイムゾーンの概念は17世紀に導入され,グレゴリオ暦は1582年に導入されたが 1927年までは広く受け入れられなかった. OSサービスはほとんど変わらずにグレゴリオ暦を仮定しており,地域で規定されたタイムゾーンがその日付に有効と仮定しているかもしれない. (最も初期の法制化されたタイムゾーンは1847-12-01のロンドンである.)ある種のOSはタイムゾーン内の位置の経度に基づいた ‘ローカルタイム’の以前の使用を仮定している.

殆どのOSは POSIXct時刻を C型の longとして表現している.これは32ビット OSでは期間1902年から2037年をカバーすることを意味する.すべての既知の64ビットプラットフォームと我々が32ビットWindowsで使っているコードに対しては,表示可能な時刻範囲は数百万年である.しかしながら全てが1902年以前と2037年以降を正確にカバーするわけではない.符号なし型を使い従って1970年以前の時刻を表現できなかった無知蒙昧なOSが幾つかある.

可能な場合はプラットフォームの限界が検出される.そして限界外では我々は独自の自前の Cコードを使う.これは,1902年(当時はサマータイムが存在しなかった)や予測された 2030年から2037年に対して(DSTへの移行が同様に日曜日だとして選ばれた)使用されているGMTからのオフセットを使う.そして isdstが正であるか,(もし -1ならば)またはもし DSTが2030年以降のその日に使用されているならば,別の(サマータイム)タイムゾーンを使う.

UTCからのオフセットが1902年以前では変わる土地(例えばローマ)があることを注意しよう.これらはOSのサポートがある場合だけ正確に処理される.

DST規則が将来も残ると仮定する理由はない.実際USは2005年に将来復帰する可能性と共に,それを2007年から変更することを決定した.従って一年,二年間を超える変換は不確かである.

警告

ある種の Unix風システム(特に Linux)では環境変数 TZが設定されていないが,一方でそれを必要とする内部コード(POSIXがそうであるように)を持つ.我々はこれを解決すべく努力してきたが,もし予期せぬ事態が起きたら TZを設定してみること.適正な設定については Sys.timezoneを見よ.

クラス "POSIXlt"のオブジェクトを比較する際には細心の注意が要る.成分と属性がオプションであるだけでなく,幾つかの成分は ‘まだ未定’を意味する値を持ちながら,同時に異なったタイムゾーンでは全く異なった体裁で表示されることがある.

References

Ripley, B. D. and Hornik, K. (2001) Date-time classes. R News, 1/2, 8–11. https://www.r-project.org/doc/Rnews/Rnews_2001-2.pdf

Page 129: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

dcf 129

See Also

時刻なしの日付に対しては Dates.クラス間の変換については as.POSIXctと as.POSIXlt.

文字列表現への・からの変換については strptime.

"POSIXct"オブジェクトとしての時刻については Sys.time.

時間差については difftime.

これらのクラスに対するメソッドについては cut.POSIXt, seq.POSIXt, round.POSIXtそして trunc.POSIXt.

便利な抽出関数については weekdays.

Examples

(z <- Sys.time()) # クラス "POSIXct" としての現在の日付,

Sys.time() - 3600 # 一時間前

as.POSIXlt(Sys.time(), "GMT") # GMTでの現在時刻format(.leap.seconds) # 使用タイムゾーンでの閏秒print(.leap.seconds, tz = "PST8PDT") # Seattle では

## "POSIXlt" の*内部*表現を眺める:leapS <- as.POSIXlt(.leap.seconds)names(leapS) ; is.list(leapS)## str() "スマートすぎる" --> unclass(.) が必要:utils::str(unclass(leapS), vec.len = 7)

dcf Read and Write Data in DCF Format

Description

Rオブジェクトを Debian Control File書式のファイルから・へ読み書きする.

Usage

read.dcf(file, fields = NULL, all = FALSE, keep.white = NULL)

write.dcf(x, file = "", append = FALSE,indent = 0.1 * getOption("width"),width = 0.9 * getOption("width"),keep.white = NULL)

Arguments

file ファイルやコネクションの名前を与える文字列. ""はコンソールへの出力を指示する. read.dcfに対してはこれは圧縮ファイルの名前で良い (gzfileを見よ).

fields DFCファイルから読み取る欄.既定ではすべての欄を読む.

Page 130: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

130 dcf

all 論理値で,記録の中に一つの欄が複数ある時これをすべて一緒にすることを指示する.もし allが偽なら(既定)そうしたものの最後に登場したものが使われる.

keep.white 欄名の空白をそのままにする欄の文字列,又は NULL (既定)はそうした欄が無いことを指示する.可能ならば文字列に強制変換する.空白がそのままにされない欄に対しては, read.dcfは先頭と末尾にある空白は取り除かれ,そして write.dcfは strwrapを用いて保持する.

x 書き込まれるべきオブジェクトで典型的にはデータフレーム.もしそうでなければ xをデータフレームに強制変換しようとする.

append 論理値.もし TRUEなら出力はファイルに付加される.もし FALSEならその名前の既存のファイルは破壊される.

indent 出力項目中の継続行に対するインデンテーションを指定する正整数.

width 出力中の行の折り返しに対する目標コラムを与える正整数.

Details

DCFは平文テキストファイル中にデータベースを保管する簡単な書式で,人が簡単に直接読み書きできる.DCFは記述やパッケージの内容等の Rのシステム情報を保管するために様々な場所で使われる.

Rに移植されている DCF規則は:

1. データベースは一つ又はそれ以上の記録からなり,各々は一つ又はそれ以上の名前付き欄を持つ.すべての記録が各欄を持つ必要はない.欄は一つの記録に複数回登場しても良い.

2. 普通の行は空白でない文字から始まる.

3. 普通の行は tag:valueの形式である,つまり名前タグとその欄に対する名前を持ち: で分離される(最初の : がカウントされる).値は空であっても良い(つまり空白のみ).

4. もし行に空白以外の文字が一つでもあれば,空白で始まる行は継続行である(先行欄に対して).空白でない文字が‘.’ だけである継続行は空の行とされる(複数パラグラフの欄値を許す).

5. 記録は一つもしくはそれ以上の空の行(つまり空白文字のみ)で分離される.

6. 個々の行は任意に長くなれないかもしれない;R 3.0.2以前では長さの制限は行ごとに約 8191バイトである.

read.dcf(all = FALSE)は欄をバイトごとに読むことを注意する.これは読み込まれる‘DESCRIPTION’ファイルの ASCII欄のみが使われること,又はその ‘Encoding’欄は残りの欄の再エンコーディングに使われることを許す.

write.dcfは NA欄を書き込まない.

Value

既定の read.dcf(all = FALSE)は記録ごとに一つの行と欄ごとに一つの列を持つ文字列行列を返す.欄の値の先頭と末尾の引き続く空白は欄が keep.white中にリストされていなければ無視される.もしタグ名がファイル中に指定されているが対応する値が空ならば,空文字列が返される.もし欄のタグ名が fields中に指定されているが記録中に使われていないならば,対応する値は NAである.もし欄が記録中で繰り返されていれば,遭遇した最後の欄が返される.不正な書式の行はエラーになる.

Page 131: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

debug 131

read.dcf(all = TRUE)に対してはデータフレームが返され,再び記録ごとに一つの行と欄ごとに一つの列をもつ.列は複数回登場した欄に対する文字列ベクトルのリストであり,さもなければ文字列ベクトルである.

空のファイルは適正な DCFファイルであることを注意しよう.そして read.dcfはゼロ行の行列やデータフレームを返す.

write.dcfに対しては不可視の NULL.

References

https://www.debian.org/doc/debian-policy/ch-controlfields.html.

Rはエンコーディング UTF-8を要求していない.それは最近の Debianの要求である.更にそれは ‘#’で始まるコメント行を認める Debian固有の副書式も使用しない.

See Also

write.table.

read.dcfを使ってパッケージのレポジトリの索引を読む available.packages.

Examples

## パッケージ 'splines' 中の DESCRIPTION file の簡略版を作るx <- read.dcf(file = system.file("DESCRIPTION", package = "splines"),

fields = c("Package", "Version", "Title"))write.dcf(x)

## 複数の記録を持つオンラインの DCF ファイルcon <- url("http://cran.r-project.org/src/contrib/PACKAGES")y <- read.dcf(con, all = TRUE)close(con)utils::str(y)

debug Debug a Function

Description

関数に対するデバッギングフラグを設定,解除,確認する. textと condition引数はbrowserへの呼び出しを通じて提供できるものと同じである.一度ブラウザが導入されるとユーザはこれらを検索でき,ユーザがどのブレイクポイントが活性化したかを特定することが出来るようになる.

Usage

debug(fun, text = "", condition = NULL)debugonce(fun, text = "", condition = NULL)undebug(fun)isdebugged(fun)debuggingState(on = NULL)

Page 132: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

132 Defunct

Arguments

fun インタプリタ型の R関数.

text ブラウザーが起動した時検索できる文字列.

condition ブラウザーが起動した時検索できる条件.

on 論理値;サポート関数 debuggingStateの呼び出しは,もしデバッグ機能が大局的に開いた状態なら TRUEを返し,さもなければ FALSEを返す.これらの値の一つ又は他の引数は状態を設定する.もしデバッギング状態が FALSEならば,どのデバッグ行動も起きない(しかし関数中の明示的な browser呼び出しは動作し続ける).

Details

デバッグ用のフラグを持つ関数が入力されると,通常の実行は中断され,関数本体は一度に一実行文ずつ実行される.新しいブラウザの文脈が各ステップごとに始められる(そして先の物は破棄される).

ユーザはデバッグのプロンプトに命令や R表現式(その後に新行)を入力できる.命令はbrowserのヘルプに詳細がある.

他の関数の内部で定義されている関数をデバッグするには,一回のステップでその定義の最後まで進み,それからその名前に対して debugを呼び出す.

もし先頭から始まっていない関数をデバッグしたければ trace(..., at = *) かsetBreakpointを使う.

debugの使用は持続的で,デバッグを停止しない限りデバッガはすべての発動ごとに起動する (もし関数が取り除かれ置き換えられるとデバッグ状態は保存されないことを注意しよう).次に関数が起動された時だけ debugonceを使ってデバッガを開始しよう.

S4メソッド(Methodsを見よ)をデバッグするには, traceを使う必要がある.典型的には browserを呼び出す,つまり次のようにするtrace("plot", browser, exit = browser, signature = c("track", "missing"))

関数がデバッグのために入力された時逆構文解析された呼び出しに対してプリントされる行数は options(deparse.max.lines)の設定で制限できる.

バイトコンパイルされた関数に対してデバッギングを有効にすると,デバッギングが無効化されるまで関数のインタプリタ版が使われる.

See Also

browser, trace; Error: ... メッセージ後のスタックを見るためには traceback;別のデバッグ法については recover.

Defunct Marking Objects as Defunct

Description

Rからある関数を取り除いた時は,それを .Defunctを呼び出す関数に置き換えるべきである.

Usage

.Defunct(new, package = NULL, msg)

Page 133: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

delayedAssign 133

Arguments

new 文字列:代替関数の示唆.

package 文字列: どこに廃止関数がリストされているかを示唆する際に使うパッケージ.

msg 文字列:プリントされるメッセージ.もしなければ既定のメッセージが使われる.

Details

.Defunctは廃止された関数から呼び出される.関数は base (対応する Rdファイルへのエイリアスを加え)を含む,適当な pkgに対する help("pkg-defunct")中にリストされるべきである.

See Also

Deprecated.

パッケージ中の廃止関数をリストする base-defunct等.

delayedAssign Delay Evaluation

Description

delayedAssign はもしその値が要求されると与えられた表現式を評価する 予約を作る.これは(インタプリタ型)関数の評価に対する Rが用いる遅延評価機構への直接のアクセスを提供する.

Usage

delayedAssign(x, value, eval.env = parent.frame(1),assign.env = parent.frame(1))

Arguments

x 変数名(関数呼び出しでは引用化文字列で与えられる)

value xに付値される表現式

eval.env valueをその中で評価する環境

assign.env xをその中に付値する環境

Details

eval.envと assign.envの既定値は共に現在アクティブな環境である.

delayedAssignによって予約に付値された表現式はそれが最終的に‘強制’される前は評価されない.これは変数が最初にアクセスされた時に起こる.

予約が最終的に強制された時,それは eval.env (その中身は途中で変更されるかもしれない)の中で評価される.その後で,値は固定され表現式は二度と評価されない.

Page 134: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

134 deparse

Value

この関数は,valueを評価するために変数 xに予約を付値するという,その副作用のために起動される.

See Also

もし assign.env が .GlobalEnv でない時予約に関連付けられた表現式を見るためにはsubstitute.

Examples

msg <- "old"delayedAssign("x", msg)substitute(x) # 大局的環境中にあるため 'x' だけを示す.msg <- "new!"x # 新しい!

delayedAssign("x", {for(i in 1:3)

cat("yippee!\n")10

})

x^2 #- きゃあx^2 #- 単なる数

ne <- new.env()delayedAssign("x", pi + 2, assign.env = ne)## 予約を見る {それを "強制" (つまり評価)せずに}:substitute(x, ne) # 'pi + 2'

### 環境中の予約 [上級者向け]: ---------------------

e <- (function(x, y = 1, z) environment())(cos, "y", {cat(" HO!\n"); pi+2})## ある環境中のすべての予約を(それらを強制せずに)見るには?gete <- function(e_)

lapply(lapply(ls(e_), as.name),function(n) eval(substitute(substitute(X, e_), list(X=n))))

(exps <- gete(e))sapply(exps, typeof)

(le <- as.list(e)) # 予約を評価("強制")するstopifnot(identical(unname(le), lapply(exps, eval))) # そして別の "Ho!"

deparse Expression Deparsing

Description

未評価の表現式を文字列に変換する.

Page 135: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

deparse 135

Usage

deparse(expr, width.cutoff = 60L,backtick = mode(expr) %in%

c("call", "expression", "(", "function"),control = c("keepInteger", "showAttributes", "keepNA"),nlines = -1L)

Arguments

expr 任意の R表現式.

width.cutoff [20, 500]中の整数で,行分割が試みられるカットオフ(バイト単位)を決める.

backtick 標準的な構文に従わないシンボル名をバックチックで囲むかどうかを指定する論理値.

control 逆構文解析のオプションの文字列ベクトル. .deparseOptsを見よ.

nlines 整数:作られる行の最大値.負の値は制限なし.

Details

この関数は未評価の表現式(ここで ‘表現式’とは expressionで使われるモード "expression"のベクトルという厳密な概念よりも広い意味で使われている)を文字列に変換する(一種の parseの逆).

これの典型的な使用法はデータセットとプロットに対する内容が分かるラベルを作ることである.下の例はこの機能の簡単な使用例を示す.これは関数 myplot への実際の引数の文字列バージョンであるプロットに対するラベルを作るため関数 deparse とsubstituteを使う.

オプション backtickに対する既定動作は単一のシンボルではなく複合表現式のみを引用化することである.これは既存コードを分断することを避けるための折衷案である.

control = "all"の使用は deparse()を parse()の逆操作に最も近くする.しかしながら,このオプションを使ってすらすべてのオブジェクトが逆構文解析可能なわけではなく,もし関数はそれが求められていることが不可能と認識すると警告がでる.

数値と複素数値ベクトルは有効桁数15桁を用いて変換される:より詳細は as.characterを見よ.

width.cutoffは行の長さの下限である:一行の逆構文解析は最低 width.cutoffバイトが出力されるまで進行し,そして例えば arg = valueといった表現は行をまたがって分割されない.

Note

ソース属性が実際の関数定義と食い違うリスクを避けるため,関数のソース属性は属性として逆解析されない.

内部構造の逆構文解析は正確でないかもしれない:例えば recordPlotで記録されたグラフィックスディスプレイのリストは逆解析されることを意図しておらず,呼び出し.Internalはプリミティブ呼び出しとされる.

References

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

Page 136: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

136 deparseOpts

See Also

substitute, parse, expression.

バックチックを含む引用化の決まりについては Quotes.

Examples

require(stats); require(graphics)

deparse(args(lm))deparse(args(lm), width = 500)myplot <-function(x, y) {

plot(x, y, xlab = deparse(substitute(x)),ylab = deparse(substitute(y)))

}e <- quote(`foo bar`)deparse(e)deparse(e, backtick = TRUE)e <- quote(`foo bar`+1)deparse(e)deparse(e, control = "all")

deparseOpts Options for Expression Deparsing

Description

deparse, dputそして dumpに対する逆構文解析オプションを処理する.

Usage

.deparseOpts(control)

Arguments

control 逆構文解析オプションの文字列.

Details

これは deparse, dputそして dumpによりそれらの control引数を処理するために呼び出される.

control引数はゼロもしくはそれ以上の以下の文字列を含むベクトルである.部分マッチングが使われる.

keepInteger 整数ベクトルを as.integer()で囲むか接尾辞 Lをつけて構文解析時に倍精度数値に変換されないようにする. "S_compatible"が設定されていない限り,ベクトル中に NAでない値がないときこれは整数 NAが(NA_integer_により)保護されることを保証する.

quoteExpressions 表現式を quote()で囲み,再構文解析時に評価されないようにする.

showAttributes オブジェクトが(source属性以外の)属性を持つとき,それらをオブジェクトの値と並んで表示するために structure()を使う.これは deparseと dputの既定値である.

Page 137: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Deprecated 137

useSource もしオブジェクトが source属性を持てば,オブジェクトを逆解析する代わりにそれを表示する.現在関数定義だけに適用される.

warnIncomplete environmentや外部ポインター等のある種の奇妙なオブジェクトは正しく逆構文解析されない.このオプションはもし逆構文解析器がこうした状況の一つを認識すると警告を発生する.

同等に,R < 2.7.0の構文解析器は8192バイトまでの文字列しか受け付けず,このオプションはそれより長い文字列に対して警告する.

keepNA 整数,実数そして文字列 NAは必要なら同じ型に構文解析されるように,強制変換関数で囲まれる.Rでは NA_real_は出力可能なので,これは主に S_compatibleとの関連で用いられる.

all 上に挙げられたすべてのオプションを指定する省略形.これは dumpに対しては既定で,edit (固定されている)で使われるオプションである.

delayPromises 予約を評価する代わりに <promise: expression>の形式に逆構文解析する.値と予約の環境は示されず逆構文解析されたコードは読み込み実行できない.

S_compatible Sと R < 2.5.0に可能な限り互換に逆構文解析する. Sとの互換性のために倍精度ベクトル中の整数値は小数点付きで逆構文解析される.バックチックは使われない.

hexNumeric 実数と有限複素数は2進小数として最大の記録正確度を持つ ‘"%a"’の形式で出力される (16進数としてコードされる:sprintfを見よ)一方もしくは双方が有限でない複素数値はあたかもこのオプションが未設定であるかのように出力される.

(これはこの書式が正確にサポートされていることに依存している: Windows上での既知の問題は R 3.1.2以来解消されている.)

digits17 実数と有限複素数は既定よりもより高精度な表示を与える ‘"%.17g"’の形式で出力される(しかし出力はプラットフォームに依存し,読み戻される際に精度の損失があり得る).一方もしくは双方が有限でない複素数値はあたかもこのオプションが未設定であるかのように出力される.

殆どの読みやすい(しかし恐らく不完全な)表示に対しては control = NULL を使おう.これはオブジェクトの値を表示するが,その属性はしない.deparse の既定は属性も表示するが,結果の構文可能性を高める他のオプションは一切使用しない.(dput と dump はより多くの既定オプションを使い,ソースのない関数のプリントにc("keepInteger", "keepNA")を使う.)

control = "all"の使用は deparse()を最も parse()の逆操作に近くする.しかしながら,このオプションでもすべてのオブジェクトが逆構文解析可能になるわけではない.もし不可能なことを要求されていると関数が認識すると警告が出る.また倍精度実数と複素数値の10進数表現は不正確になることがあり得る.

"hexNumeric"と "digits17"の一方だけが指定できる.

Value

選択されたオプションに対応する数値.

Deprecated Marking Objects as Deprecated

Description

あるオブジェクトが Rから廃止予定の時は,まず廃止予定と宣言され, .Deprecatedへの呼び出しを含むべきである.

Page 138: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

138 det

Usage

.Deprecated(new, package=NULL, msg,old = as.character(sys.call(sys.parent()))[1L])

Arguments

new 文字列:代替関数の示唆.

package 文字列:どこに廃止予定関数がリストされるかを示唆する際に使われるパッケージ.

msg 文字列:プリントされるメッセージ.もしなければ既定のメッセージが使われる.

old 廃止予定の関数(既定)や用法を指定する文字列.

Details

.Deprecated("<new name>")は廃止予定関数から呼び出される.これらの関数の元々のヘルプ頁はしばしば help("oldName-deprecated") (引用符に注意) で見つかる.関数はbaseを含む適当な pkgに対する help("pkg-deprecated")にリストされるべきである.

See Also

Defunct

パッケージ中の廃止予定関数をリストする base-deprecated等.

det Calculate the Determinant of a Matrix

Description

detは行列の行列式を計算する.determinantは行列式の絶対値(オプションでその対数値)と行列式の符号を個別に返す総称的関数である.

Usage

det(x, ...)determinant(x, logarithm = TRUE, ...)

Arguments

x 数値行列:論理値は数値に強制変換される.

logarithm 論理値;もし TRUE (既定値)ならば行列式の絶対値の対数を返す.... オプション引数.現在未使用. detの以前のバージョンはオプション

の method引数を認めていた.この引数は無視されるがエラーにはならない.

Details

関数 determinantは LU分解を使い関数 detは単に determinantへの呼び出しのラッパである.

しばしば,行列式を計算することはある問題を解くためにあなたがすべきことでは無い.

Page 139: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

detach 139

Value

detに対しては xの行列式.determinantに対しては次の成分を持つリスト

modulus 数値.もし logarithm が FALSE ならば行列式の絶対値;さもなければ絶対値の対数.

sign 整数;行列式の正負に応じて +1か −1.

Examples

(x <- matrix(1:4, ncol = 2))unlist(determinant(x))det(x)

det(print(cbind(1, 1:3, c(2,0,1))))

detach Detach Objects from the Search Path

Description

データベースの登録を解除する,つまり,それを利用可能な Rオブジェクトの検索パスから取り除く.普通これは attach関数で付加されている data.frameか library関数で付加されたパッケージである.

Usage

detach(name, pos = 2L, unload = FALSE, character.only = FALSE,force = FALSE)

Arguments

name 登録を解除するオブジェクト.既定では search()[pos].これは引用化されていない名前でも,文字列であるが文字列ベクトルではないものでも良い.もし数字が与えられればそれは posとされる.

pos 登録解除するデータベースの search()中の位置添字. nameが数字であれば pos = nameが使われる.

unload パッケージを登録解除する際名前空間を取り除くことを試みるかどうかを指示する論理値.もしパッケージが名前空間を持ち unload がTRUEならば detachは unloadNamespaceを使って名前空間を取り除こうとする:もし名前空間が別の名前空間から移入されているか,またはunloadが FALSEならば名前空間は取り除かれない.

character.only nameが文字列であると仮定しても良いかどうかを指示する論理値.

force 論理値:他の付加されたパッケージが依存しているパッケージを除いても良いか?

Page 140: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

140 detach

Details

これは最も普通に検索リスト上の位置を表す単一の数字と共に使われ, package:toolsのような引用化されたりされていない項目の名前とともに使うことも出来る.

もしパッケージが名前空間を持てば,それの登録解除は既定では名前空間を除去しない(そして unload = TRUEであったとしても).そして登録解除は一般に動的に読み込まれたコンパイル済みコード(DLL)も除去しない.更に,名前空間からの登録された S3メソッドも取り除かれない.その名前空間が読み込まれたパッケージに対して libraryを使うと,それは既に読み込まれている名前空間を移出したものを付加する.従ってパッケージの登録解除と再付加はパッケージ中の幾つかかすべての成分を更新しないかもしれず,推奨できない.

Value

返り値は不可視である.パッケージが除かれると NULLで,さもなければオブジェクトが付加された時に attachが返した環境(それが付加されて以来の変化を取り入れた)である.

良い作法

引数無しの detach()は検索パス上の作業空間の後の最初の項目を取り去る.それを何度もまたは僅かな回数呼び出すのも極めて簡単で, attachの呼び出し後に検索パスが変化していることを注意する必要もない.

attach/detach の関数中での使用は極力避けたほうが良い(attach に対するヘルプを見よ).そして対話的な使用とスクリプト中では名前で取り除くのが賢明である.

Note

作業空間(位置 1)も baseパッケージ(検索リストの最後の項目)も取り除くことはできない.もしそうしようとするとエラーになる.

ある種の名前空間の登録解除は望ましくない副作用を持つ:例えば gridを除けばすべてのグラフィックデバイスが閉じられる.そしてある種のシステムでは tcltkは一度取り除かれると再登録できず,再登録を試みると Rはクラッシュするかもしれない.

References

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

See Also

attach, library, search, objects, unloadNamespace, library.dynam.unload .

Examples

require(splines) # パッケージdetach(package:splines)## 又はlibrary(splines)pkg <- "package:splines"

detach(pkg, character.only = TRUE)

## 注意深く:'splines' が既に付加されていない限りこれをしてはならない

Page 141: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

diag 141

library(splines)detach(2) # 名前の代わりに位置を使う

## atatch への名前引数と## 文字列ベクトルで名前が付けられたデータベースを取り除く例attach_and_detach <- function(db, pos = 2){

name <- deparse(substitute(db))attach(db, pos = pos, name = name)print(search()[pos])detach(name, character.only = TRUE)

}attach_and_detach(women, pos = 3)

diag Matrix Diagonals

Description

行列の対角要素を取り出す又は置き換える,もしくは対角行列を作る.

Usage

diag(x = 1, nrow, ncol)diag(x) <- value

Arguments

x 行列,ベクトルもしくは1次元配列,又は欠損.

nrow, ncol xが行列でない時の結果の次元.

value 単一の数値もしくは長さが現在の対角成分の長さのベクトル.モードが xのそれに強制変換出来る必要がある.

Details

diagは4種類の異なった使い方がある:

1. 対角要素を取り出すときは xは行列.

2. xが欠損で nrowが指定された時は単位行列を返す.

3. xはスカラ(長さ1のベクトル)で唯一の引数なら,サイズがそのスカラで与えられる正方単位行列.

4. xが数値ベクトルで,長さが少なくとも2か更に引数がある.この時結果は与えられた対角要素で非対角要素が0の行列.

最初のケースでは nrowや ncolを指定するとエラーになる.

Page 142: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

142 diff

Value

もし xが行列ならば diag(x)は xの対角要素を返す.もし行列 xがマッチする列と行名を持てば結果のベクトルは名前を持つ.

置き換え形は行列 xの対角部分を与えられた値に設定する.

他のすべてのケースでは値は nrow行と ncol列を持つ行列である (もし ncolが与えられなければ行列は正方になる).ここで nrowはもし指定されれば引数から取られ,さもなければ x から推測される:もしそれが長さが2以上のベクトル(又は1次元配列) ならば,その長さは行数であるが,もしそれが長さが1で nrowも ncolも指定されていなければnrow = as.integer(x)である.

対角行列が返されるとき,xが対角要素を与える4番目のケースを除き対角要素は1である:それは必要に応じてリサイクルされるか刈り詰められるが,部分的なリサイクルや刈り詰めは警告がである.

Note

もし xが長さ1のベクトルになりえる時,diag(x)の使用は予期しない効果を持ちうる.一貫性のある結果を得るためには diag(x, nrow = length(x))を使う.

References

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

See Also

upper.tri, lower.tri, matrix.

Examples

require(stats)dim(diag(3))diag(10, 3, 4) # 何であるか想像してみよ?all(diag(1:3) == {m <- matrix(0,3,3); diag(m) <- 1:3; m})

diag(var(M <- cbind(X = 1:5, Y = stats::rnorm(5))))#-> 名前 "X" と "Y" のベクトル

rownames(M) <- c(colnames(M), rep("", 3));M; diag(M) # 同様に名前付き

diff Lagged Differences

Description

適当にラグがついたり繰り返した階差を返す.

Page 143: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

diff 143

Usage

diff(x, ...)

## Default S3 method:diff(x, lag = 1, differences = 1, ...)

## S3 method for class 'POSIXt'diff(x, lag = 1, differences = 1, ...)

## S3 method for class 'Date'diff(x, lag = 1, differences = 1, ...)

Arguments

x 階差を取るべき数値ベクトル又は行列.

lag どのラグを使うかを指示する整数.

differences 階差の次数を指示する整数.

... メソッドへ・から引き渡される追加引数.

Details

diffは総称的関数で,既定のメソッドと classes "ts", "POSIXt"そして "Date"用のメソッドを持つ.

NAは伝播する.

Value

もし xが長さ nのベクトルで differences = 1ならば,計算結果は継続する差x[(1+lag):n] - x[1:(n-lag)]になる.

もし differenceが1より大きければこのアルゴリズムが xに再帰的に適用される.返り値は xより短いベクトルになることを注意する.

もし xが行列なら階差演算は各列ごとに実行される.

References

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

See Also

diff.ts, diffinv.

Examples

diff(1:10, 2)diff(1:10, 2, 2)x <- cumsum(cumsum(1:10))diff(x, lag = 2)diff(x, differences = 2)

diff(.leap.seconds)

Page 144: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

144 difftime

difftime Time Intervals

Description

時間区間の作成,プリント,そして幾つかの算術.

Usage

time1 - time2

difftime(time1, time2, tz,units = c("auto", "secs", "mins", "hours",

"days", "weeks"))

as.difftime(tim, format = "%X", units = "auto")

## S3 method for class 'difftime'format(x, ...)## S3 method for class 'difftime'units(x)## S3 replacement method for class 'difftime'units(x) <- value## S3 method for class 'difftime'as.double(x, units = "auto", ...)

## グループメソッド,特に round(), signif(), floor(),## ceiling(), trunc(), abs() 用:Math() でなく直接呼び出す:## S3 method for class 'difftime'Math(x, ...)

Arguments

time1, time2 日付・時間オブジェクトまたは日付オブジェクト.

tz 変換に用いられるタイムゾーン指定で主に "POSIXlt" オブジェクト用.

units 文字列.希望する単位.簡略化可能.

value 文字列.簡略化できないのを除けば unitsに類似.

tim 時間区間を指定する文字列または数値.

format timの書式を指定する文字: strptimeを見よ.既定値はロケール固有の時間書式.

x "difftime"を継承するオブジェクト.

... 他のメソッドへ・から引き渡される引数.

Details

関数 difftimeは二つの日付/時刻オブジェクトの差を計算し,単位を示す属性付きのクラス "difftime"のオブジェクトを返す. Mathグループメソッドは round, signif, floor,

Page 145: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

difftime 145

ceiling, trunc, abs,このクラスのオブジェクトに対するメソッド signを提供し,グループ総称的(Opsを見よ)な論理と算術演算がある.

もし units = "auto"ならば,適当な単位のセットが選ばれる.これはすべての差の絶対値が1より大きくなるような最大のものである ("weeks"を除く).

日付/時刻オブジェクトの差は units = "auto"を用いた difftimeの呼び出しによりこのクラスのオブジェクトを返す.別法として as.difftime()は文字列でコードされたか数値の時刻に関して動作する;後者の場合単位を指定すべきで formatは効果を持たない.

"difftime"オブジェクトに対する限られた算術が利用できる:それらは足したり引いたり,数値ベクトルで掛けたり割ったりできる.加えて数値ベクトルから "difftime"オブジェクトを足したり引いたりすると数値ベクトルは暗黙のうちに "difftime"オブジェクトに同じ単位で変換される.meanと sumに対するメソッドがある(Summaryグループメソッド経由で).

"difftime"オブジェクトの単位は units関数で取り出すことができ,これはまた置き換え形式も持つ.もし単位が変更されると数値ベクトルはそれにしたがってスケール化される.置き換えバージョンは名前や次元といった属性を保存する.

units = "days"は24時間周期を持ち,従ってサマータイムを考慮しないことを注意しよう.クラス "Date"のオブジェクトはあたかも UTCタイムゾーン中であるかのように計算される.

as.doubleメソッドは指定単位で表現された数値を返す. units = "auto"の使用はオブジェクトの単位を使うことを意味する.

formatメソッドは数値を単純に整形し,単位を文字列テキストとして付け加える.

Note

"months"のような単位は決まった長さではないので使えない.月,四半期,年単位の区間を作るには seq.Dateや seq.POSIXtを使う.

See Also

DateTimeClasses.

Examples

(z <- Sys.time() - 3600)Sys.time() - z # 丁度 3600 秒以上.

## R 1.2.2 と 1.2.3 の公開期間の秒差.ISOdate(2001, 4, 26) - ISOdate(2001, 2, 26)

as.difftime(c("0:3:20", "11:23:15"))as.difftime(c("3:20", "23:15", "2:"), format = "%H:%M") # 3番目は NA になる(z <- as.difftime(c(0,30,60), units = "mins"))as.numeric(z, units = "secs")as.numeric(z, units = "hours")format(z)

Page 146: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

146 dim

dim Dimensions of an Object

Description

オブジェクトの次元を取り出したり設定したりする.

Usage

dim(x)dim(x) <- value

Arguments

x Rオブジェクト,例えば行列,配列またはデータフレーム.

value 既定メソッドに対して NULLか数値ベクトルで,(打ち切りにより)整数に変換される.

Details

関数 dimと dim<-は内部総称的プリミティブ関数である.

dimは data.frameに対するメソッドで xの row.names属性と xの長さを返す (それぞれ行と列数として).

Value

配列に対しては(従って特に行列に対しては) dimはオブジェクトの dim属性を返す.これは NULLであるかモード integerのベクトルである.

置き換えメソッドは "dim"属性を変え(新しい値が一貫性がある限り),属性 "dimnames"と "names"を取り去る.

References

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

See Also

ncol, nrow and dimnames.

Examples

x <- 1:12 ; dim(x) <- c(3,4)x

# nrow と ncol の簡易版は次のように定義できるnrow0 <- function(x) dim(x)[1]ncol0 <- function(x) dim(x)[2]

Page 147: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

dimnames 147

dimnames Dimnames of an Object

Description

オブジェクトの次元名を取り出したり設定したりする.

Usage

dimnames(x)dimnames(x) <- value

provideDimnames(x, sep = "", base = list(LETTERS), unique = TRUE)

Arguments

x Rオブジェクト.例えば行列,配列もしくはデータフレーム.

value dimnames(x)に対する可能な名前: ‘値’節を見よ.

sep 文字列で構成された次元名中の baseシンボルと数字を分離する.

base 文字列ベクトルの空でないリスト.リスト成分は順番に(必要ならリサイクル使用して)空の次元名成分に対する置き換えを構成するのに使われる.例も見よ.

unique logical indicating that the dimnames constructed are unique within each dimen-sion in the sense of make.unique.

Details

関数 dimnamesと dimnames<-は総称的である.

配列(そして従って行列)に対しては,これらはオブジェクトの dimnames属性(attributesを見よ)を取り出したり設定したりする.リスト valueは名前を持つことができ,これらは適当であれば配列の次元のラベルに使われる.

配列/行列に対する置き換えメソッドは value のベクトルと因子要素を文字列に強制変換するが,as.characterに対するメソッドを選択適用しない.これは長さゼロの要素をNULLに,そして長さゼロのリストを NULLに強制変換する.もし valueが次元の数よりも短いリストなら,それは必要な長さまで NULLを用いて拡大される.

両方がデータフレームに対するメソッドを持つ.データフレームの次元名はそのrow.namesと namesである.置き換えメソッドに対しては valueの各成分は as.characterにより強制変換される.

1次元行列に対しては namesは dimnamesの(唯一の)成分と同じである.

両方共プリミティブな関数である.

provideDimnames(x)は欠損した箇所では dimnamesを提供し,その結果は各成分に対して文字列の次元名を持つ.

Page 148: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

148 do.call

Value

行列や配列の次元名は NULL (これは保管されない)になり得る.もしくは dim(x)と同じ長さのリストでも良い.もしリストならその成分は NULLか xの適当な次元の正の長さを持つ文字列ベクトルである.このリストは名前を持つことが出来る.すべての成分がNULLになる可能性がある:そうした次元名は NULLに変換されるかもしれない.

"data.frame"メソッドに対しては次元名は文字列ベクトルであり,行名は重複したり欠損した値を持ってはならない.

provideDimnames(x)は xを返し,“NULLを含まない” dimnamesを持つ,つまり各成分は正しい長さを持つ文字列になる.

Note

dimnames(A)[[1]] <- valueのような次元名成分の設定は普通に行われるが,もし付値される値が NULLならば上手く動作しないことを注意しよう.代わりに rownamesか,次元名リストすべてを操作しよう.

References

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

See Also

rownames, colnames; array, matrix, data.frame.

Examples

## rownames と colnames の簡略版は次のように定義できるrownames0 <- function(x) dimnames(x)[[1]]colnames0 <- function(x) dimnames(x)[[2]]

(dn <- dimnames(A <- provideDimnames(N <- array(1:24, dim = 2:4))))A0 <- A; dimnames(A)[2:3] <- list(NULL)stopifnot(identical(A0, provideDimnames(A)))strd <- function(x) utils::str(dimnames(x))strd(provideDimnames(A, base= list(letters[-(1:9)], tail(LETTERS))))strd(provideDimnames(N, base= list(letters[-(1:9)], tail(LETTERS)))) # リサイクルstrd(provideDimnames(A, base= list(c("AA","BB")))) # 双方のレベルについてリサイクル

do.call Execute a Function Call

Description

do.call は名前や関数とそれに渡される引数リストから関数呼び出しを構成し実行する.

Usage

do.call(what, args, quote = FALSE, envir = parent.frame())

Page 149: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

do.call 149

Arguments

what 関数か呼び出されるべき関数の名前である空でない文字列.

args 関数呼び出しに対する引数リスト. argsの names属性は引数名を与える.

quote 引数を引用化するかどうかを指示する論理値.

envir 呼び出しをその中で評価する環境.これは whatが文字列で引数がシンボルか引用化表現式である場合に最も有用になる.

Details

もし quoteが FALSEならば(既定),引数は評価される (envir中ではなく呼び出し環境中で).もし quoteが TRUEならば各引数は引用化される(quoteを見よ)ので引数評価の効果は引用符を取り去ることにあり,呼び出しが構成されるときオリジナルの引数は未評価のままにされる.

substituteのようなある種の関数の挙動は,あたかもインタプリタから評価されたかのような do.callを用いて評価された関数に対するものとは同じではない.正確な構文は現在未定義で変更されるかもしれない.

Value

結果は(未評価の)関数呼び出し.

警告

これは .Internalや他の非 API呼び出しの使用に関する制限を回避する試みに使われるべきではない.

References

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

See Also

未評価の呼び出しを作る call.

Examples

do.call("complex", list(imag = 1:3))

## もし既にリスト(例えばデータフレーム)があれば## 更に引数を加えるために c() が必要になるtmp <- expand.grid(letters[1:2], 1:3, c("+", "-"))do.call("paste", c(tmp, sep = ""))

do.call(paste, list(as.name("A"), as.name("B")), quote = TRUE)

## オブジェクトをどこで見つけるかに関する例.A <- 2f <- function(x) print(x^2)env <- new.env()assign("A", 10, envir = env)assign("f", f, envir = env)

Page 150: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

150 double

f <- function(x) print(x)f(A) # 2do.call("f", list(A)) # 2do.call("f", list(A), envir = env) # 4do.call(f, list(A), envir = env) # 2do.call("f", list(quote(A)), envir = env) # 100do.call(f, list(quote(A)), envir = env) # 10do.call("f", list(as.name("A")), envir = env) # 100

eval(call("f", A)) # 2eval(call("f", quote(A))) # 2eval(call("f", A), envir = env) # 4eval(call("f", quote(A)), envir = env) # 100

dontCheck Identity Function to Suppress Checking

Description

関数 dontCheckは identityと同等であるが, R CMD checkによるコード解析で xのチェックを抑制する指令として解釈される.現在これはcheckFF(registration = TRUE)による外部関数呼び出しによって .NAME引数をチェックする際にのみ使われる.

Usage

dontCheck(x)

Arguments

x Rオブジェクト.

See Also

suppressForeignCheckはこれと dontCheckが望ましくなく,可能である限り避けるべきである理由を解説する.

double Double-Precision Vectors

Description

倍精度実数ベクトルを作る,強制変換する,または検査する.

Usage

double(length = 0)as.double(x, ...)is.double(x)

single(length = 0)as.single(x, ...)

Page 151: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

double 151

Arguments

length 希望の長さを指定する非負整数.倍精度値は整数に強制変換される:長さ1以外の引数を与えるのはエラーになる.

x 変換もしく検査されるオブジェクト.

... 他のメソッドに・から渡される追加引数.

Details

doubleは指定された長さの倍精度実数ベクトルを作る.ベクトルの要素はすべて 0に等しい.これは numericと同等である.

as.doubleは総称的関数である.これは as.numericと同等である.メソッドは基本タイプ "double"のオブジェクトを返すべきである.

is.double倍精度型の検査関数である.

R は単精度データ型を持たない.すべての実数は倍精度書式で保管される.関数as.single と single は属性 Csingle を設定することを除いて as.double 及び doubleと同等であり .Cと .Fortranインタフェイスで使われるが,そうした文脈だけで使われることを意図している.

Value

doubleは指定された長さの倍精度実数ベクトルを作る.ベクトルの要素はすべて 0に等しい.

as.doubleはその引数を倍精度型に強制変換しようと試みる: as.vectorと同様にこれは名前を含む属性を剥ぎ取る. (属性を取り除かずにオブジェクトを倍精度型にするには storage.modeを使う.)オプションの空白に10進数表現か16進数表現 (0xか 0Xで始まる)が続く文字列(大文字小文字にかかわらず)を変換することが出来,"NA", "NaN", "Inf"そして "infinity"といった特殊値も変換できる.

因子に対する as.doubleは因子の水準の基礎にあるコードを作りだし,水準の数値表現ではない,factorも見よ.

is.doubleはその引数が double型かどうかに応じて TRUEか FALSEを取る.

倍精度値

すべての Rプラットフォームは IEC 60559 (IEEE 754としても知られている)標準に準拠した値で動作することが要求されている.これは基本的に53ビットの精度で動作し,絶対値の範囲約 2 × 10−308 から 2 × 10308 の精度を表現する.これは更に特殊値 NaN (何種類もある),正負の無限大,正負のゼロ (Rはこれらを同じものとして扱う)を持つ.また絶対値が上の範囲の上や下にある非正規(副正規)数があるが精度は劣る.

これらの限界についての正確な情報は .Machineを見よ.倍精度実数がどのように扱われるかは最終的には CPU/FPUとコンパイラに任される.

IEEE 754-2008/IEC60559:2011ではこれは ‘binary64’書式と呼ばれる.

名前に関する注意

Rが浮動小数点ベクトルに対して doubleと numeric (そして以前は real)という二種類の名前を持つのには歴史的な混乱がある.

doubleは type名で, numericは mode名でまた暗黙のクラス classである.S4形式的クラスとしては "numeric"を使おう.

Page 152: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

152 dput

可能性のある混乱は Rがモード "numeric"を‘倍精度実数か整数’の意味で使ってきたことで,これは S4用法と矛盾する.このようにして is.numericはクラスではなくモードを検査するが,as.numeric (これは as.doubleと同一)はそのクラスに強制変換する.

References

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

https://en.wikipedia.org/wiki/IEEE_754-1985, https://en.wikipedia.org/wiki/IEEE_754-2008, https://en.wikipedia.org/wiki/Double_precision, https://en.wikipedia.org/wiki/Denormal_number.

標準に関する情報へのリンクは http://grouper.ieee.org/groups/754/.

See Also

integer, numeric, storage.mode.

Examples

is.double(1)all(double(3) == 0)

dput Write an Object to a File or Recreate it

Description

Rオブジェクトもアスキーテキスト表現をファイルやコネクションに書き込む,もしくはそれからオブジェクトを再現する.

Usage

dput(x, file = "",control = c("keepNA", "keepInteger", "showAttributes"))

dget(file, keep.source = FALSE)

Arguments

x オブジェクト.

file ファイルかコネクションの名前である文字列. ""はコンソールへの出力を意味する.

control 逆構文解析オプションを指示する文字列ベクトル.それらの解説は.deparseOptsを見よ.

keep.source 論理値:もし可能なら,関数の構文解析時にソースの書式を保持するか?

Page 153: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

dput 153

Details

dputは fileを開きオブジェクト xの逆構文解析結果をそのファイルに書き込む.オブジェクトの名前は書き込まれない(dumpとは異なり).もし xが関数なら関連する環境は取り除かれる.従ってスコープ情報は失われ得る.

オブジェクトの逆構文解析は困難であり,いつも可能とは限らない.既定の controlを用いると,dput()は可読な流儀で逆構文解析を試みるが,より複雑であったり普通ではないオブジェクトに対してはオリジナルと同一に構文解析されることは有りそうもない.最も完全な逆構文解析のためには control = "all"を使う;属性すら含まない最も単純な逆構文解析のためには control = NULLを使う.

dputはもし期待されるよりも少ない文字がファイルに書き込まれると警告を出す.これはファイルシステムが一杯であるか破損していることを意味するかもしれない.

内部表現の逆構文解析結果よりは保存されたソースを表示するためには "useSource"をcontrol中に含める.現在 Rは関数定義に対してだけソースを保存する.もしソースの表現について気にしない(例えばデータオブジェクトに対するように)のであれば速度の点で sourceを呼び出す時 options(keep.source = FALSE)を設定する.

Value

dputに対しては最初の引数を不可視で返す.

dgetに対してはオブジェクトを作る.

Note

これは Rセッション間でオブジェクトを移動する良い方法では無い. dumpの方が好ましいが,関数 saveは Rデータを持ち運ぶために使われるようにデザインされており,dputが正しく処理できない Rオブジェクトでも動作し,より速い.

ソース属性が実際の関数定義と同期しないリスクを避けるため,関数のソース属性は決して属性として書かれない.

References

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

See Also

deparse, dump, write.

Examples

## 関数 mean のアスキー版をファイル "foo" に書き込むdput(mean, "foo")## そしてそれを 'bar' に復元bar <- dget("foo")## コメント付きの関数を作るbaz <- function(x) {

# Subtract from one1-x

}## そしてそれを表示dput(baz)## それから保存されたソースを表示

Page 154: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

154 drop

dput(baz, control = "useSource")

## 数値:xx <- pi^(1:3)dput(xx)dput(xx, control = "digits17")dput(xx, control = "hexNumeric")dput(xx, "foo"); dget("foo") - xx # すべてのプラットフォームで少々丸めdput(xx, "foo", control = "digits17")dget("foo") - xx # ある種のプラットフォームで少々丸めdput(xx, "foo", control = "hexNumeric"); dget("foo") - xxunlink("foo")

drop Drop Redundant Extent Information

Description

配列の唯一つの水準を持つ次元を削除する.

Usage

drop(x)

Arguments

x 配列(行列を含む).

Value

もし xが次元属性を持つオブジェクト(つまり行列か配列)ならば, dropは xと同様のオブジェクトであるが,長さが1の次元が取り除かれている.関連する次元名は補正されxと共に返される:もし結果がベクトルならば名前は(もしあれば)次元名から取られる.もし結果が長さ1のベクトルならば名前は次元名を持つ最初の次元から取られる.

配列の部分抽出 ([)は drop = FALSEと共に使われない限りこの縮小を実施するが,dropを直接使うほうが役に立つことがある.

See Also

モデル式中の項を除くために使われる drop1.

Examples

dim(drop(array(1:12, dim = c(1,3,1,1,2,1,2)))) # = 3 2 2drop(1:3 %*% 2:4) # スカラ積

Page 155: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

droplevels 155

droplevels droplevels

Description

関数 droplevelsは因子から使われていない水準を取り去るのに使われる.もしくは,より普通には,データフレーム中の因子から取り去る.

Usage

## S3 method for class 'factor'droplevels(x, ...)## S3 method for class 'data.frame'droplevels(x, except, ...)

Arguments

x 未使用の水準を取り去るべきオブジェクト.

... メソッドに引き渡される追加引数.

except 水準を取り去らない列の添字.

Details

クラス "factor"に対するメソッドは本質的に factor(x)に等しい.

except引数は通常の添字規則に従う.

Value

droplevelsは xと同じクラスのオブジェクトを返す.

Note

この関数は R 2.12.0で導入された.これは当初データフレーム中の一つ又はそれ以上の因子が部分抽出後に縮小された水準集合からの要素だけを含むケースを意図していた.(部分抽出は一般に未使用の水準を取り去らないことを注意する).既定では水準はデータフレーム中のすべての因子から取り除かれるが, except引数はこれが好ましくない列を指定することを可能にする.

See Also

データフレームの部分抽出は subset.因子の定義は factor.配列の次元の除去は drop.モデル式からの項の除去は drop1.因子の部分抽出は [.factor.

Examples

aq <- transform(airquality, Month = factor(Month, labels = month.abb[5:9]))aq <- subset(aq, Month != "Jul")table(aq$Month)table(droplevels(aq)$Month)

Page 156: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

156 dump

dump Text Representations of R Objects

Description

この関数は Rオブジェクトの名前からそのテキスト表現をファイルもしくはコネクションに作る. dumpによるファイルは通常他の Rセッションで読み込み実行できる.

Usage

dump(list, file = "dumpdata.R", append = FALSE,control = "all", envir = parent.frame(), evaluate = TRUE)

Arguments

list 文字列ベクトル.書き込まれるべき一つもしくは複数の Rオブジェクトの名前.

file ファイルかコネクションの名前である文字列. ""はコンソールを指示する.

append もし TRUEで fileが文字列ならば,出力は fileに追加される;さもなければ fileの内容は上書きされる.

control 逆構文解析のオプションを指示する文字列ベクトル. .deparseOptsにそれらの説明がある.

envir オブジェクトを探すべき環境.

evaluate 論理値.予約を評価すべきか?

Details

もし名前のオブジェクトの幾つかが(スコープ中に)存在しなければ,それらは無視され警告が出る.もし fileがファイルでオブジェクトが存在しなければファイルは生成されない.

読み込み実行は dumpされたオブジェクトと同一のコピーを作らないかもしれない.もし問題が起きそうなら警告が出る.例えば特異なオブジェクトや複雑なオブジェクトの場合である (注意を見よ).

期待されるよりも少ない文字がファイルに書き込まれた場合は警告が出る.これはファイルシステムが一杯であるか破損していることを意味するかもしれない.

dumpで書込されたファイルは別の Rセッションで source関数で読み込み実行できるが,関数 saveは Rデータの移動用にデザインされており,dumpが扱えない Rオブジェクトでも処理できる.最大の復元可能性のためには control = c("all", "hexNumeric")を使う.

オブジェクトのより可読性の高い表現を得るためには control = NULLを使おう.これは属性を無視し, sourceされた時同一のコピーを作り出す可能性が減少するような単純化を行う.詳細は deparseを見よ.

保存されたソースの表示ではなく関数の内部表現を逆構文解析するにはcontrol = c("keepInteger", "warnIncomplete", "keepNA")を使う.これはすべての整形とコメントを無くすが,保存されたソースが最早正確ではない時に役に立つかもしれない.

Page 157: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

duplicated 157

普通ユーザが予約に遭遇するのは,遅延読み込みの結果 (既定の evaluate = TRUEが本質的な時)としてと, evaluate = FALSEが意図されていたかもしれない時の delayedAssignの後だけである.

Value

書き込みされたオブジェクトの名前を含む不可視の文字列ベクトル.

Note

dumpは基本名前空間中で定義されているので,dumpがトップレベルのプロンプトから呼び出されるか envir引数が明示的に与えられていない限り,パッケージ baseが大局的環境より先に調べられる.

ソース属性が実際の関数定義と動機されないリスクを避けるため,関数のソース属性は決して属性としては書き込まれない.

現在の所環境,外部ポインター,弱参照そして型 S4 のオブジェクトは source 関数で読み込み実行できるような仕方では逆構文解析されない.加えて言語オブジェクトはcontrolの値が何であろうとも単純な仕方で逆構文解析され,これはそれらの属性を書き込まないことを含む (警告が出る).

References

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

See Also

Rオブジェクトのより信頼できる保存方法は dput, dget, write.save.

Examples

x <- 1; y <- 1:10dump(ls(pattern = '^[xyz]'), "xyz.Rdmped")print(.Last.value)unlink("xyz.Rdmped")

duplicated Determine Duplicate Elements

Description

duplicated()はベクトルやデータフレームのどの要素がより小さな添字の要素と重複しているかを決定し,どの要素(行)が重複しているかを示す論理値ベクトルを返す.

anyDuplicated(.) は any(duplicated(.)) に対する一般化されより効率的なショートカットである.

Page 158: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

158 duplicated

Usage

duplicated(x, incomparables = FALSE, ...)

## Default S3 method:duplicated(x, incomparables = FALSE,

fromLast = FALSE, nmax = NA, ...)

## S3 method for class 'array'duplicated(x, incomparables = FALSE, MARGIN = 1,

fromLast = FALSE, ...)

anyDuplicated(x, incomparables = FALSE, ...)## Default S3 method:anyDuplicated(x, incomparables = FALSE,

fromLast = FALSE, ...)## S3 method for class 'array'anyDuplicated(x, incomparables = FALSE,

MARGIN = 1, fromLast = FALSE, ...)

Arguments

x ベクトル,データフレーム,配列もしくは NULL.

incomparables 比較不可能な値のベクトル. FALSEは特殊値ですべての値が比較可能であることを意味し,そして恐らく既定以外のメソッドに対して受け入れられる唯一の値である.これは内部的に xと同じ型に変換される.

fromLast 重複が逆側から考慮されるべきかどうかを指示する論理値,つまり同一の要素の最後(又は最右翼)が duplicated = FALSEに対応する.

nmax 期待される最大のユニークな項目の数(1以上).

... 特定のメソッド用の引数.

MARGIN 固定される配列のマージン: applyを見よ.そして MARGIN = 0は役に立つかもしれない.

Details

これらは総称的な関数で,ベクトル(リスクを含む),データフレーム,そして配列(含む行列)に対するメソッドを持つ.

既定のメソッドに対して,そして duplicatedと anyDuplicatedに対する同値なメソッドが存在する限り anyDuplicated(x, ...) は一般化された any(duplicated(x, ...)) へのショートカットで,もしそうしたものがあれば最初の重複項目 x[i]の添字 iを返し,さもなければ 0を返す.これらの挙動は duplicatedと anyDuplicatedの少なくともひとつが関連するメソッドを持てば異なるかもしれない.

duplicated(x, fromLast = TRUE)は rev(duplicated(rev(x)))に同値であるが速い.

データフレームメソッドは行の文字表現を \rで分離してつなげたものに対して操作するので,もしデータフレームが埋め込みの改行を持つ文字列や文字列に正しくマップされない列を持てば不完全になるかもしれない.

配列メソッドは,もし残りの次元が先の(fromLast = TRUE ならば後の) 要素のそれらと同じ(行主導で)であれば, MARGINで指定される副配列の各要素に対して計算を行う.これは最も普通には重複した行(既定)や列(MARGIN = 2の時)を見つけるのに使われる.MARGIN = 0は xと同じ次元を持つ配列を返すことを注意する.

Page 159: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

duplicated 159

欠損値は等しいと見做されるが,NaNは NA_real_に等しくはない.

incomparables中の値は決して重複しているとマークされない.これはかなり少数の値の集合に対して使われることを意図しており,非常に大きな集合に対しては効率的ではない.

一つ以上の列を持つデータフレームや,1以上の長さの次元を比較するときの配列や行列に対して使うときは,これは文字列表現の同等性をテストする.これは浮動小数点数の正確な同等性に賢明でない信頼を置く者を混乱させるであろう!

文字列は入力のどれかが "bytes" (Encodingを見よ)とマークされていればバイト列として比較される.

因子,論理値そしてバイトベクトルを除き,既定の nmax = NAは nmax = length(x)に等しい.サイズ 8*nmaxバイトのハッシュテーブルが確保されるので,nmaxを適当に設定すれば大きな量のメモリーを節約できる.因子に対してはこれは自動的に length(x)と水準数プラス1(NA用)の大きな方に設定される.もし nmaxが小さすぎる値に設定されるとエラーになりやすい: nmax = 1は黙って無視される.

Long vectorsは duplicatedの既定メソッドに対してはサポートされているが,nmaxが提供されている時だけ有用かもしれない.

Value

duplicated(): ベクトル入力に対しては x と同じ長さの論理値ベクトル.データフレームに対しては各行に対して一つの要素の論理値ベクトル.行列や配列に対しては,MARGIN = 0であれば同じ次元と次元名の論理値配列.

anyDuplicated(): 長さ1の整数又は実数値ベクトルで,もし重複があれば最初の重複の添字を値に持つ.さもなければ 0.

警告

これをリストに使うと遅い可能性がある.特にもし要素が原子的ベクトルでない(vectorを見よ)か,それらの属性だけが異なる場合がそうである.最悪の場合計算量は O(n2)になる.

References

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

See Also

unique.

Examples

x <- c(9:20, 1:5, 3:7, 0:8)## ユニークな要素の取り出し(xu <- x[!duplicated(x)])## 同じこと,同じ要素であるが異なった順序:(xu2 <- x[!duplicated(x, fromLast = TRUE)])

## xu == unique(x) であるが unique(x) はより効率的stopifnot(identical(xu, unique(x)),

identical(xu2, unique(x, fromLast = TRUE)))

duplicated(iris)[140:143]

Page 160: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

160 dyn.load

duplicated(iris3, MARGIN = c(1, 3))anyDuplicated(iris) ## 143

anyDuplicated(x)anyDuplicated(x, fromLast = TRUE)

dyn.load Foreign Function Interface

Description

DLL (共有オブジェクトとも呼ばれる)をロードしたりアンロードする.そして C関数やFortranサブルーティンが利用できるか検査する.

Usage

dyn.load(x, local = TRUE, now = TRUE, ...)dyn.unload(x)

is.loaded(symbol, PACKAGE = "", type = "")

Arguments

x DLLへのパス名を与える文字列.DLLはまたダイナミック共有オブジェクトとも呼ばれる. (これがどういう意味かは‘詳細’を見よ.)

local DLL中のシンボルはそれら自体の局所的テーブルに保管され DLLを縦断し共有されないか,それとも大局的なシンボルテーブルに付け加えられるかを制御する論理値.これが有効かどうかはシステム依存である. Windowsでは無視される.

now すべてのシンボルがライブラリのロード直後に解決される (そして再配置される)か,それらが使われるまで保留するかを制御する論理値.この制御は開発者がライブラリが完全ですべての必要ないんぼるを持つかどうか検査したり,ユーザが欠損シンボルを無視するのに役にたつ.これが有効かどうかはシステム依存である.Windowsでは無視される.

... さらなる拡張のための追加引数. Windowsでは下の ‘Windows’節を見よ.

symbol シンボル名を与える文字列.

PACKAGE もし与えられれば,nameの探索をこの引数で与えられる DLL (プラス便宜的な拡張, ‘.so’, ‘.sl’, ‘.dll’, . . . )に制限する.これはパッケージに対する安全性を加えることを意図しており,この引数を使うことで他のパッケージがそれらの外部シンボルを無視することを保証することが出来る.これは .C, .Call, .Fortran そして .External 関数中と同じように使われる.

type 探すべきシンボルの型:任意(既定値の ""), "Fortran", "Call" 又は"External".

Page 161: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

dyn.load 161

Details

dyn.loadがロードしたオブジェクトはすべてのプラットフォームで ‘dynamically loadablelibraries’ (‘DLL’と省略される)と呼ばれる. OS Xは例外でこの単語は別種のオブジェクトを指す. Unix風システムではこれらはまた ‘dynamic shared objects’ (‘DSO’),または単に ‘shared objects’と呼ばれる.(POSIX標準は ‘executable object file’と呼ぶが,他のどれもが使わない.)

適当な DLLの作成とインストールについては ‘参考’節と,マニュアル ‘Writing R Exten-sions’と ‘R Installation and Administration’を見よ.

不幸にもごく僅かなプラットフォーム(例えば Compaq Tru64)は PACKAGE引数を正確に処理せず,Rにリンクされたシンボルを不正確に見つけるかもしれない.

dyn.loadへの追加引数は POSIXシステムでは dlopen()ルーチンへのモード引数の異なった様相を反映する.これらはユーザが個別のライブラリに対するロードプロセスに対するより大きな制御を行えるように提供されている.一般に既定値は適切であり,十分な理由と意味を理解している場合だけそれらを上書きすべきである.

(Unixでは)引数 localは DLL中に付加されたシンボルが他の DLLにも見えるかどうかを制御することを許す.シンボルをそれら自体の名前空間中に保持することは良い作法であるが,関連する‘章’を跨ってシンボルを共有することは多くの場合に有益である.加えて,プラットフォームとOSのバージョンによっては,あるライブラリはすべてのシンボルを成功裏に解決するにはそれらのシンボルを大局的にロードする必要がある.

now引数を FALSEとすることで遅延ロードを使うことによる可能な副作用に注意すべきである.欠損したシンボルを持つルーティンが呼び出されると,プロセスは即座に停止する.意図されている使い道は,ライブラリの開発者が値 TRUEを使った呼び出しですべてのシンボルが実際に解決されているかを使って検査することと,通常のユーザがFALSEを用いた呼び出しで欠損シンボルを無視し利用可能なものが呼び出せることである.

これらを加えた当初の動機は Java の仮想マシンライブラリの _init() ルーチン中のそうした停止を避けるためである.しかしながら,局所的にロードされたシンボルは他のDLLからは (恐らく読み込めず)利用できないかもしれない.大局的なテーブルに加えられたものはアプリケーションの他のすべての要素から利用可能であり,従って二つの異なった DLLを跨って共有できる.

ある種(非常に古い)のシステムは局所/大局的そして遅延/即座の解決の (明示的な)サポートを提供しない.これは微妙なバグの源になり得る.サポートされないオプションが使われると警告メッセージが発せられるように手配することが出来る.これは options関数を使いオプション verboseか warnをゼロ以外に設定することでなされる.

幾つかの例を持つこれらの追加引数に関する短い議論が http://cm.bell-labs.com/stat/duncan/R/dynloadにある.

(Windowsでは)外部コードは浮動小数点の制御ワードを変更してはならないが,多くのDLLそうする.普通の変更はそれが R既定の64ビット精度の代わりに 53ビット精度を使うように設定することである.もしくは幾つかの例外のマスクを外す.dyn.loadはそうした変更を検知し Rの制御ワードを既定値の16進数 8001Fに戻す.これは DLLの不良動作を起こす可能性がある;もしそうならば制御ワード自体を保存し回復するように書きなおす必要がある.もし warn.FPUが options関数を使い TRUEに設定されれば警告が出る.(もし警告が制御ワードが 8001F以外の値に変更されたと報告するならば,状況をWindowsの保守管理者に報告してほしい:それは恐らく内部的なバグを示唆している.)

Value

関数 dyn.loadは指定された DLLを実行 Rイメージにリンクするという副次効果のために使われる.そうすると .C, .Call, .Fortranそして .Externalへの呼び出しはライブラ

Page 162: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

162 dyn.load

リに含まれるコンパイル済みの C関数や Fortranサブルーチンを実行するのに使うことが出来る. dyn.loadの返り値はクラス DLLInfoのオブジェクトである.このクラスに関する情報は getLoadedDLLsを見よ.

関数 dyn.unloadは DLLのリンクを解除する.同じ名前の DLLのロード取り消しと再ロードは上手く行くこともあれば行かないこともある: Solarisではロードされた最初のバージョンを使う.

is.loaded はシンボル名がロードされており検索可能かどうか,従って .C や .Fortranや .Callや .External中の .NAME引数に対する文字列値として使えるかどうか,を検査する.もし四つの呼び出し関数のどれかが typeが指定されない限りエントリーポイントを使用するのに成功すれば成功することになる. (Fortranのシンボルがどのようにマップされるかについては .Fortranを見よ.)基本パッケージ中のシンボルは検索可能ではないことを注意しよう.他のパッケージもそのようにマークすることが出来る.

Windows

‘DLLをロードする標準的機構’はどこに DLLがあるかの探索順序(そのほうが好ましいが,もし絶対パスとして与えられなければ)と,どこで依存 DLL が見つかるかを含む.この検索パスはWindowsのバージョンとセキュリティ設定に依存するが, Windows XPSP1以降のバージョンでは次のようになる

• アプリケーションが起動されたディレクトリ.

• 様々なシステムディレクトリ.例えば ‘c:/Windows/system32’, ‘c:/Windows/system’そして ‘c:/Windows’.

• 現在のディレクトリ.

• 環境変数 PATHで与えられる実行プログラムに対する検索パスに沿って.

パッケージはしばしば依存 DLLをそれらの ‘libs’ディレクトリに提供することを要求すし,これを PATH変数の設定で行う (最近の Rのバージョンでは library.dynamがそれを自動的に行う)が,DLLの検索順序は DLLが起動ディレクトリとシステムディレクトリにあることが好ましいことを意味する. Windows XP SP1とそれ以降では検索順序を変更する方法がある.もし引数 DLLpathが dyn.loadに提供されると,後者は DLLpathの値を二番目の位置に挿入するためにWindowsのシステムコール SetDllDirectoryを利用し,そして dyn.load呼び出しの持続期間中現在のディレクトリを取り除く. (この方法では唯ひとつのディレクトリだけが挿入できることを注意する.)

ユーザは次のようなメッセージに混乱させられるかもしれない

error: unable to load shared object'.../library/rJava/libs/x64/rJava.dll':LoadLibrary failure: The specified module could not be found.

最後の行は Windows (R ではない) の診断である:見つけられなかった ‘module’ は‘rJava.dll’ではなくWindowsが探している何か(ここでは恐らく Java DLL)である:もし運が良ければより詳細を示すダイアローグボックスが与えられる.

警告

library.dynamによりロードされた DLLに関して dyn.unloadを使ってはならない:library.dynam.unloadを使う.これはシステムの段取りに対して必要になる.

Page 163: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

eapply 163

Note

is.loaded は .C 等に与える名前を必要とし, (S に於けるような) 廃止された関数symbol.Cや symbol.Forによって再マップされるものではない.

DLL の作成とその実行プログラムへの実行時リンクは非常にプラットフォーム依存である.現在ではこれを行う C サブルーティンコール dlopen が POSIX I標準になってきているため,プロセスは少々簡略化されてきている. Unix風システムでは dyn.loadはdlopen機構を使い,それをサポートするすべてのプラットフォームで動作するはずである. Windowsでは DLLをロードするのに標準的機構 (LoadLibrary)を使う.

Unix風システムでの DLLのロードに対するオリジナルのコードは Heiner Schwarteにより提供された.

References

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

See Also

パッケージの .onLoad初期化内部で使うには library.dynam.

適当な DLLを作るには SHLIB.

.C, .Fortran, .External, .Call.

Examples

## R >= 3.0.0 ではこれらすべてが偽であることが期待される.is.loaded("supsmu") # stats 中の Fortran エントリーポイントis.loaded("supsmu", "stats", "Fortran")is.loaded("PDF", type = "External") # grDevices 中の pdf() デバイス

eapply Apply a Function Over Values in an Environment

Description

eapplyは FUNを environmentからの名前付き値に適用し結果をリストとして返す.ユーザはすべての名前付きオブジェクトを使うことを要求できる(普通ドットで始まる名前は無視される).出力はソートされず囲み環境は調べられない.

これは primitive関数である.

Usage

eapply(env, FUN, ..., all.names = FALSE, USE.NAMES = TRUE)

Arguments

env 使われる環境.

FUN 適用される関数で, match.funを使って見つけられる. +, %*%,のような関数に対しては関数名は逆引用化か引用化されなければならない.

... FUNへの追加引数.

all.names すべての値に対して関数を適用するかどうかを指示する論理値.

USE.NAMES 結果のリストが名前を持つべきかどうかを指示する論理値.

Page 164: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

164 eigen

Value

名前付き(USE.NAMES = FALSE出ない限り)リスト.成分の順序はハッシュされた環境に対しては任意であることを注意.

See Also

environment, lapply.

Examples

require(stats)

env <- new.env(hash = FALSE) # 従って順序は固定されるenv$a <- 1:10env$beta <- exp(-3:3)env$logic <- c(TRUE, FALSE, FALSE, TRUE)# そこに何があるのか?utils::ls.str(env)

# 各リスト要素に対して平均を計算eapply(env, mean)

unlist(eapply(env, mean, USE.NAMES = FALSE))

# 各要素に対する中央値とクォンタイル("..." による引き渡しを利用):eapply(env, quantile, probs = 1:3/4)eapply(env, quantile)

eigen Spectral Decomposition of a Matrix

Description

数値(倍精度実数,整数,論理値)又は複素数値行列の固有値と固有ベクトルを計算する.

Usage

eigen(x, symmetric, only.values = FALSE, EISPACK = FALSE)

Arguments

x そのスペクトル分解を計算する数値又は複素数値行列,論理値行列は数値に強制変換される.

symmetric もし TRUEならば行列は対称(複素数値ならエルミート)行列とされ,その下三角部分(対角部分を含む)が使われる.もし symmetricが指定されないと行列の対称性が検査される.

only.values もし TRUEなら固有値だけが計算され返される.さもなければ固有値と固有ベクトルの双方が返される.

EISPACK 論理値.廃止されており無視される.

Page 165: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

eigen 165

Details

symmetricが指定されていないと,コードは行列が数値精度のあり得る限界内で対称かどうかを決定しようと試みる.値を自分自身で設定するほうがより速く安全である.

固有値を計算するのは大きな行列に対しては時間がかかる部分である.

行列の固有値分解は実世界の計算機ではエラーを招きやすい:完全な解析が Wilkinson(1965)にある.望みうる凡ては xに適当に近い問題への解である.実対称行列は実固有値を繰り返し求める代数的な解を持つものの,計算された解は固有値の複素共役対を持つ近似した行列のそれになるかもしれない.

基礎にある LAPACKコードの不成功の結果は正のエラーコード(最も普通には 1)を持つエラーに至る:これらは FORTRANコードの詳細な研究によってのみ解釈できる.

Value

xのスペクトル分解が以下の成分を持つリストとして返される

values xの p個の固有値を含むベクトルで,減少順にソートされている.非対称ケースで複素数値になる(実行列に対してすら)場合は Mod(values)の大きさ順になる.実非対称行列に対してはベクトルは複素共益固有値の対が検出された時だけ複素数値になる.

vectors p × p行列でその列が xの固有ベクトルを含む.もしくは only.valuesが TRUEなら NULL.ベクトルは長さ1に正規化されている.固有値ベクトルは定数の曖昧さを除いて定義されていることを思い出そう:長さが指定されていても依然として絶対値が1のスカラ(実行列に対しては符号)を除いてのみ定義される.

もし r <- eigen(A)で V <- r$vectors; lam <- r$valuesならば,

A = V ΛV −1

(数値的なゴミを除き)であり,ここで Λ =diag(lam).

Source

eigenは LAPACKルーチンが DSYEVR, DGEEV, ZHEEVそして ZGEEVを使う.

LAPACKは http://www.netlib.org/lapackにあり,その使用法は参考文献に挙げられている.

References

Anderson. E. and ten others (1999) LAPACK Users’ Guide. Third Edition. SIAM.Available on-line at http://www.netlib.org/lapack/lug/lapack_lug.html.

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth &Brooks/Cole. Springer-Verlag Lecture Notes in Computer Science 6.

Wilkinson, J. H. (1965) The Algebraic Eigenvalue Problem. Clarendon Press, Oxford.

See Also

eigenの一般化である svd;関連する分解である qrと chol.

行列の行列式を計算するには qr分解がより効率的である:det.

Page 166: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

166 encodeString

Examples

eigen(cbind(c(1,-1), c(-1,1)))eigen(cbind(c(1,-1), c(-1,1)), symmetric = FALSE)# 同じ(異なったアルゴリズム).

eigen(cbind(1, c(1,-1)), only.values = TRUE)eigen(cbind(-1, 2:1)) # 値を計算eigen(print(cbind(c(0, 1i), c(-1i, 0)))) # エルミート ==> 実固有値## 3 x 3:eigen(cbind( 1, 3:1, 1:3))eigen(cbind(-1, c(1:2,0), 0:2)) # 複素数値

encodeString Encode Character Vector as for Printing

Description

encodeStringは文字列中の文字列を print.defaultが行うのと同じようにエスケープする.そしてオプションでエンコードされた文字列を欄幅に合わせる.

Usage

encodeString(x, width = 0, quote = "", na.encode = TRUE,justify = c("left", "right", "centre", "none"))

Arguments

x 文字列ベクトルもしくはそうしたものに as.characterで変換できるもの.

width 整数:最初の欄幅.もし NULLか NAなら,これは xの任意の要素に対して必要な最大幅とされる.

quote 文字:もしあれば引用符.

na.encode 論理値:NA文字をエンコードするか?justify 文字列:部分マッチが許される.もし最小の欄幅まで埋めることが必

要ならどのように空白を挿入するか? format.default との一貫性のため justify == "none"は width = 0に同値.

Details

これはバックスラッシュと ‘\a’ (ベル), ‘\b’ (バックスペース), ‘\f’ (復帰), ‘\n’ (行替え),‘\r’ (改行), ‘\t’ (タブ) and ‘\v’ (垂直タブ)のような制御文字,及び1バイトロケール中の任意のプリント不可能な文字をエスケープする.後者は8進数表現でプリントされる(先頭に0が付く ‘\xyz’)..

どの文字がプリント不可能かは現在のロケールに依存する. Windowsが報告するプリント可能な文字は信頼できず,従ってそこではすべての他の制御文字はプリント不可能と見做され,そしてすべてのコード 32–255の文字は1バイトロケールではプリント可能とされる.多倍長ロケールでプリント不可能な文字がどのように処理されるかについてはprint.defaultを見よ.

もし quoteが単引用符もしくは二重引用符ならば,同じタイプのすべての埋め込み引用符はエスケープされる.行末揃えは引用化文字列に対して行われ,従ってエスケープは引用符の外側に加えられる.

Page 167: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Encoding 167

Value

xと同じ長さの文字列ベクトルで,同じ属性(名前と次元を含む)を持つがクラスは設定されていない.

R 3.0.0からマークされた UTF-8エンコーディングは保存される.

Note

widthに対する既定値は format.defaultと異なる.これは文字列ベクトルに対して同様のことを行うがエンコーディングはなくエスケープを使う.

See Also

print.default

Examples

x <- "ab\bc\ndef"print(x)cat(x) # エスケープを解釈cat(encodeString(x), "\n", sep = "") # print() へ同様

factor(x) # 水準のプリントにはこれを使う

x <- c("a", "ab", "abcde")encodeString(x, width = NA) # left justificationencodeString(x, width = NA, justify = "c")encodeString(x, width = NA, justify = "r")encodeString(x, width = NA, quote = "'", justify = "r")

Encoding Read or Set the Declared Encodings for a Character Vector

Description

文字列に対する宣言されたエンコーディングを読む,設定する.

Usage

Encoding(x)

Encoding(x) <- value

enc2native(x)enc2utf8(x)

Arguments

x 文字列ベクトル.

value 正の長さの文字列ベクトル.

Page 168: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

168 Encoding

Details

Rの文字列ベクトルは "latin1"または "UTF-8"もしくは "bytes"としてエンコードされると宣言されている.こうした宣言は Encodingで見ることができ,これは値 "latin1","UTF-8", "bytes"もしくは "unknown"からなる文字列ベクトルを返す.または valueが必要に応じてリサイクルされ設定され,他の値は黙って "unknown"として扱われる.アスキー文字列は決して宣言されたエンコーディングでマークされない.なぜならすべてのサポートされているエンコーディングで表現が同一であるからである. "bytes"とマークされた文字列はバイトとして処理されるべき非アスキー文字列を意図しており,文字列エンコーディングに決して変換されない(だからそれらをテキストファイルに書き出すことはサポートされていない).

enc2nativeと enc2utf8は文字列ベクトルの要素をそれぞれネイティブのエンコーディングかUFT-8に変換し,任意のマークされたエンコーディングを考慮する.これらはprimitive関数であり,最小機能のコピーを行うようにデザインされている.

明確に設定する以外に文字列が宣言されたエンコーディングを持つようにする別の方法もある(そしてこれは Rが進化するに従い変化してきている.関数 scan, read.table,readLines,そして parseはエンコーディングを宣言するのに使える encoding引数を持つ. iconvはエンコーディングをその to引数から宣言する.適当なロケールでのコンソール入力もそうである. intToUtf8はその入力を "UTF-8"と宣言し,出力テキストコネクション (textConnectionを見よ)は適応なロケール下で動作しているときはマークされる.ある種の状況(ヘルプ頁を見よ)では source(encoding=)はそれが出力する文字列のエンコーディングをマークする.

殆どの文字操作関数は,もし対応入力が宣言されていれば,出力にそのエンコーディングを設定する.これらは chartr, strsplit(useBytes = FALSE), tolowerそして toupper,また同様に sub(useBytes = FALSE)そして gsub(useBytes = FALSE)を含む.そうした関数はエンコーディングを保存しないことを注意しよう.しかしもし入力エンコーディングが知られており,文字列が成功裏に再エンコーディング(現在のエンコーディングかUTF-8に)されておれば,出力はマークされる.

substrはエンコーディングを保存せず, chartr, tolowerそして toupperはシステムのユニコード幅広文字を持つ UTF-8エンコーディングを保存する. fixedと perlオプション付きで, strsplit, subそして gsubは,もし入力のどれかが UTF-8であれば,マークされた UTF-8の結果を返す.

pasteと sprintfは,もし対応入力のどれかがバイトとマークされていれば,バイトとマークされた要素を返す.そして,さもなければ,入力のどれかが UTF-8とマークされていれば UTF-8とマークされる.

match, pmatch, charmatch, duplicatedそして uniqueは,要素のどれかが UTF-8とマークされていれば UTF-8でマッチする.

Value

文字列ベクトル.

enc2utf8に対してはエンコーディングは常にマークされる:これらは UTF-8と Latin-1ロケールでの enc2native用である.

Examples

## x は latin1 であると意図しているx <- "fa\xE7ile"Encoding(x)Encoding(x) <- "latin1"xxx <- iconv(x, "latin1", "UTF-8")

Page 169: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

environment 169

Encoding(c(x, xx))c(x, xx)Encoding(xx) <- "bytes"xx # 16進数でエンコードされるcat("xx = ", xx, "\n", sep = "")

environment Environment Access

Description

環境を得る,設定する.検査する,そして作成する.

Usage

environment(fun = NULL)environment(fun) <- value

is.environment(x)

.GlobalEnvglobalenv().BaseNamespaceEnv

emptyenv()baseenv()

new.env(hash = TRUE, parent = parent.frame(), size = 29L)

parent.env(env)parent.env(env) <- value

environmentName(env)

env.profile(env)

Arguments

fun 関数,公式,又は既定である NULL.

value 関数を関連させる環境.

x 任意の Rオブジェクト.

hash 論理値.もし TRUEなら環境はハッシュテーブルを使う.

parent 作られた環境の囲み環境として使われる環境.

env 環境

size ハッシュされた環境の初期サイズを指定する整数.もし sizeが NAかゼロならば内部的な既定値が使われる.この引数はもし hashが FALSEなら無視される.

Page 170: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

170 environment

Details

環境は名前付きオブジェクトの集まりであるフレームと囲み環境へのポインターからなる.最も普通の例は関数呼び出しへの局所的な変数のフレームである;その囲み環境は関数が定義された環境である (その後変更されていない限り).囲み環境は親環境とは区別される:後者 (parent.frameが返す)は関数を呼び出した環境を指す.混乱しやすいので,環境との関連で ‘親’という言葉は使わないほうが良い(関数 parent.envが存在するものの).

getや existsが既定の inherits = TRUEで環境を探す時,それらはフレーム中の変数を探す,それから囲みフレームを探す云々.

大局的環境 .GlobalEnvはよりしばしばユーザの作業空間と呼ばれ,検索パス上の最初の項目になる.それは globalenv()によってもアクセスできる.検索パス上では各項目の囲み環境は次の項目になる.

オブジェクト .BaseNamespaceEnvは基本パッケージに対する名前空間環境である.基本パッケージの環境自体は baseenv()で得られる.

任意の環境から parent.envを呼び出し囲み環境のチェインを遡って行くと,ついには空環境 emptyenv()に至る.この中には何も付値できない.

置き換え関数 parent.env<-は非常に危険で,内部 Cコードによる仮定を損傷することで環境を壊滅的に変更する可能性がある.これは将来廃止されるかもしれない.

置き換え形式 environment, is.environment, baseenv, emptyenvそして globalenvはプリミティブな関数である.

基本,大局的,そして空環境と言ったシステム環境はパッケージ,名前空間そしてattach()により生成されるような名前を持つ.他の環境は "name"属性を与えることで名前を付けることが出来るが,環境は通例ではないコピー構文を持つので注意深く行う必要がある.

Value

もし funが関数か公式であれば environment(fun)はその関数や公式に関連する環境を返す.もし funが NULLなら現在の評価環境が返される.

置き換え形式は関数や公式 funの環境を valueで与えられるものに設定する.

is.environment(obj)は objが environmentである時,そしてその時だけ TRUEを返す.

new.envは親環境を囲み環境に持つ(既定)新しい(空の)環境を返す.

parent.envはその引数の囲み環境を返す.

parent.env<-はその最初の引数の囲み環境を返す.

environmentNameは文字列を返す.これは環境をプリントするときに使われる.又はそれが名前無しの環境なら ""を返す.

env.profileは次のような成分を持つリストを返す: sizeはハッシュテーブル中に保管できるチェインの数, nchainsはテーブル中の空でないチェインの数(HASHPRIにより報告されるような),そして countsは各チェインの長さを与える整数ベクトル (空のチェインに対してはゼロ).この関数はハッシュされた環境のパフォーマンスを吟味することを意図している. envがハッシュされていない環境ならば NULLが返される.

See Also

ハッシュを使うかどうかによるパフォーマンスの違いについては https://en.wikipedia.org/wiki/Hash_tableを見よ.

eval, get,そして existsの envir引数.

Page 171: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

EnvVar 171

lsは環境中のオブジェクトを眺めるのに使うことが出来る.従って ls.strは概観するのに有益かもしれない.

sys.sourceは環境に何かを配置するのに使うことが出来る.

Examples

f <- function() "top level function"

##-- 次の三つは同じものを与える:environment()environment(f).GlobalEnv

ls(envir = environment(stats::approxfun(1:2, 1:2, method = "const")))

is.environment(.GlobalEnv) # TRUE

e1 <- new.env(parent = baseenv()) # これは囲みパッケージ package:base を持つ.e2 <- new.env(parent = e1)assign("a", 3, envir = e1)ls(e1)ls(e2)exists("a", envir = e2) # これは継承により成功するexists("a", envir = e2, inherits = FALSE)exists("+", envir = e2) # これは継承により成功する

eh <- new.env(hash = TRUE, size = NA)with(env.profile(eh), stopifnot(size == length(counts)))

EnvVar Environment Variables

Description

Rセッションに影響する環境変数の幾つかの詳細.

Details

Rセッションに影響を与える可能性がある環境変数をすべて列挙するのは不可能である.Rが使用する OS関数に影響を与えるものがある.そしてアドオンパッケージに影響するものもある.しかしより重要なものの幾つかに対するノートをここで与える.これらは(他の幾つかと同様に)開始時のみに参照されるオプションの規定値を設定する.

HOME: ユーザーの ‘ホーム’ディレクトリ.

LANGUAGE: オプション.メッセージの翻訳に使われる言語.これは必要に応じて参照される.

LC_ALL: (等)オプション.ロケールの様々な様相を設定するのに使う – Sys.getlocaleを見よ.起動時に参照される.

MAKEINDEX: makeindex へのパス.未設定なら R が構築された際に決められた値.texi2dviと texi2pdfのエミュレーションモードで使われる.

R_BATCH: オプション –バッチセッションで設定される.つまり R CMD BATCHで開始されるもの.最もしばしば ""と設定され,従って !is.na(Sys.getenv("R_BATCH", NA))のように検査する.

Page 172: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

172 EnvVar

R_BROWSER: 既定ブラウザーへのパス. options("browser")の規定値を設定するのに使われる.

R_COMPLETION: オプション. もし FALSE に設定すると,コマンド行補完は使われない.(OS X GUIでは使われない.)

R_DEFAULT_PACKAGES: すべてのセッションで使われるパッケージのコンマで区切られたリスト. optionsを見よ.

R_DOC_DIR: Rの ‘doc’ディレクトリの位置. Rにより設定される.R_ENVIRON: オプション. サイトの環境ファイルへのパス: Startupを見よ.起動時に参照

される.

R_GSCMD: オプション. Ghostscriptへのパスで, dev2bitmap, bitmapそして embedFontsで使われる.これらの関数が起動されるとき参照される.これは systemに引き渡されるかのように扱われるため,空白やシェルのメタ文字はエスケープされなければならない.

R_HISTFILE: オプション. 履歴ファイルへのパス: Startupを見よ.起動時と履歴が保存されるときに参照される..

R_HISTSIZE: オプション. 履歴ファイルの最大行数.これが正確にはどのように使われるかはインタフェイスによる. readlineコマンド行インタフェイスでは履歴が保存されるとき (savehistoryまたはセッションの終了時に)効果を持つ.

R_HOME: Rのインストールのトップディレクトリ: R.homeを見よ.Rにより設定される.

R_INCLUDE_DIR: Rの ‘include’ディレクトリの位置. Rにより設定される.

R_LIBS: オプション. .libPathsの初期設定のために使われる.

R_LIBS_SITE: オプション. .libPathsの初期設定のために使われる.

R_LIBS_USER: オプション. .libPathsの初期設定のために使われる.

R_PAPERSIZE: オプション. options("papersize")の既定を設定するために使われる.つまり pdfと postscriptにより使われる.

R_PDFVIEWER: 既定の PDFビューアーのパス. R CMD Rd2pdfにより使われる.

R_PLATFORM: プラットフォーム – cpu-vendor-os の形の文字列,R.Versionを見よ.

R_PROFILE: オプション. サイトのプロファイルファイルへのパス. Startupを見よ.起動時に参照される.

R_RD4PDF: Rdファイルを pdflatexで処理する際のオプション.R CMD Rd2pdfにより使われる.

R_SHARE_DIR: Rの ‘share’ディレクトリ.Rにより設定される.R_TEXI2DVICMD: texi2dviへのパス.既定値は TEXI2DVI,そしてもし未設定なら Rが構

築された時の値とされる.起動時に options("texi2dvi")に対する既定値を設定するために参照される.これはパッケージ tools中の texi2dviと texi2pdfにより使われる.

R_UNZIPCMD: unzip へのパス.名前空間 utils が読み込まれるときに Unix 風システムでoptions("unzip")に対する初期値を設定する.

R_ZIPCMD: zipへのパス. zipとWindowsで R CMD INSTALL --buildにより使われる.

TMPDIR, TMP, TEMP: (この順で)セッションの一時ファイルを設定する際に参照される:tempdirを見よ. TMPDIRがまた幾つかのユーティリティで使われる. buildに対するヘルプを見よ.

TZ: オプション. 現在のタイムゾーン.システム固有の書式については Sys.timezoneを見よ.必要に応じて参照される.

no_proxy, http_proxy, ftp_proxy: (そしてそれ以上).オプション. download.file に対する設定:詳細はそのヘルプを見よ.

Page 173: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

eval 173

Unix固有

Unix風システムで設定されるが,(一般に) Windowsでは設定されない変数.

DISPLAY: オプション: X11, Tk (パッケージ tcltk中),そしてデータエディターと様々なパッケージで使われる.

EDITOR: 既定エディターへのパス:名前空間 utilsが読み込まれるとき options("editor")に対する規定値を設定する.

PAGER: 既定設定値が options("pager")であるページャへのパス.規定値はコンフィギュレーションの際に選ばれ,普通 lessへのパス.

R_PRINTCMD: options("printcmd")に対する既定を設定する.これは postscriptが使用する既定プリント命令を設定する.

See Also

Rセッション中で読まれ設定される Sys.getenvと Sys.setenv.

ガベージコレクションを制御する環境変数については gctorture.

eval Evaluate an (Unevaluated) Expression

Description

R表現式を指定された環境中で評価する.

Usage

eval(expr, envir = parent.frame(),enclos = if(is.list(envir) || is.pairlist(envir))

parent.frame() else baseenv())evalq(expr, envir, enclos)eval.parent(expr, n = 1)local(expr, envir = new.env())

Arguments

expr 評価されるオブジェクト.‘詳細’を見よ.

envir exprがその中で評価される環境. NULL,リスト,データフレーム,対リスト, sys.callで指定されるような整数,でも良い.

enclos envirが(対)リストやデータフレームのとき関係する.囲み環境を指定する,つまり Rが envir中で見つけられなかったオブジェクトを探す場所.これは NULL (基本パッケージ環境 baseenv()と解釈される)や環境でも良い.

n 遡るべき親世代の数.

Page 174: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

174 eval

Details

evalは expr引数を envirで指定された慣用で評価し,計算された値を返す.もし envirが指定されないと,既定は parent.frame() (evalの呼び出しが行われた環境である).

評価されるべきオブジェクトは型 callか expression又は name (名前は現在のスコープで探されそれに結び付けられたものが評価される),promise又はベクトル,関数又は環境(そのまま返される).

形式 evalqは eval(quote(expr), ...) と同値である. evalはその最初の引数を評価器に渡す前に現在のスコープで評価する: evalqはこれを避ける.

eval.parent(expr, n)は eval(expr, parent.frame(n))の短縮形である.

もし envirがリスト(データフレームのような)又は対リストならば,それは一時的環境にコピーされ(囲み環境 enclosで),一時的環境が評価に用いられる.従って exprは(対)リスト中の名前を持つ任意の成分を変更し,変更は失われる.

もし envirが NULLならばそれは空のリストと解釈され,従って envir中には何の値も存在せず探索は直接囲み環境に向かう.

localは表現式を局所的環境で評価する.これはその既定引数が新しい空の環境を作ることを除けば evalqに等しい,これは匿名の再帰的関数を作ったり,環境中で定義された変数は外部からは見えないため一種の限定された名前空間の特性を作るのに役立つ.

Value

オブジェクトの評価結果:表現式ベクトルに対してはこれは最後の要素の評価結果.

Note

スコープ規則の差から,この領域では Rと Sの間には幾つかの違いがある.特に,Sでの既定囲み環境は大局的環境である.

関数引数として渡されているデータフレーム中で表現式を評価する際は,関連する囲み環境はしばしば呼び出し側の環境である.つまり, eval(x, data, parent.frame())が必要になる.

References

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

See Also

expression, quote, sys.frame, parent.frame, environment.

更に,典型的には関数引数の,評価を強制するには force.

Examples

eval(2 ^ 2 ^ 3)mEx <- expression(2^2^3); mEx; 1 + eval(mEx)eval({ xx <- pi; xx^2}) ; xx

a <- 3 ; aa <- 4 ; evalq(evalq(a+b+aa, list(a = 1)), list(b = 5)) # == 10a <- 3 ; aa <- 4 ; evalq(evalq(a+b+aa, -1), list(b = 5)) # == 12

ev <- function() {e1 <- parent.frame()

Page 175: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

eval 175

## Evaluate a in e1aa <- eval(expression(a), e1)## evaluate the expression bound to a in e1a <- expression(x+y)list(aa = aa, eval = eval(a, e1))

}tst.ev <- function(a = 7) { x <- pi; y <- 1; ev() }tst.ev() #-> aa : 7, eval : 4.14

a <- list(a = 3, b = 4)with(a, a <- 5) # a のコピーをリストから作り,捨て去る.

#### evalq() の例##

N <- 3env <- new.env()assign("N", 27, envir = env)## このバージョンは N の可視的なコピーだけを変更する,## なぜなら eval に渡される引数は '4' だから..eval(N <- 4, env)Nget("N", envir = env)## このバージョンは env に付値する,そしてそこで N だけを変更する.evalq(N <- 5, env)Nget("N", envir = env)

#### local() の用法##

# 相互再帰的.# gg は最後の付値の値を受け取る,f の匿名バージョン.

gg <- local({k <- function(y)f(y)f <- function(x) if(x) x*k(x-1) else 1

})gg(10)sapply(1:5, gg)

# 入れ子の local:a は k にアクセスできるプライベートな保管庫gg <- local({

k <- local({a <- 1function(y){print(a <<- a+1);f(y)}

})f <- function(x) if(x) x*k(x-1) else 1

})sapply(1:5, gg)

ls(envir = environment(gg))ls(envir = environment(get("k", envir = environment(gg))))

Page 176: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

176 exists

exists Is an Object Defined?

Description

与えられた名前の Rオブジェクトを探し,可能性としてそれを返す.

Usage

exists(x, where = -1, envir = , frame, mode = "any",inherits = TRUE)

get0(x, envir = pos.to.env(-1L), mode = "any", inherits = TRUE,ifnotfound = NULL)

Arguments

x 変数名(文字列で与えられる).

where オブジェクトをどこで探すか(詳細節を見よ);もし省略されると関数はオブジェクトの名前が表現式中に引用化されていないかのように探す.

envir 吟味される環境を指定する別の方法であるが, where引数を単に使うにはより簡単.

frame 呼び出しリスト中のフレーム. whereを sys.frame(frame)として与えるのと同値.

mode 探されるオブジェクトのモード: ‘詳細’節を見よ.

inherits 環境の囲みフレームを探すべきか?

ifnotfound xが存在しない時の get0(x, *)の返り値.

Details

where引数はオブジェクトを幾つかの方法のいずれかで探す環境を指定できる:整数として(検索リスト中の位置);検索リスト中の文字列名;もしくは環境として(現在アクティブな関数呼び出しにアクセスするために sys.frameを使うことを含む).envir引数は環境を指定する別の方法であるが,主として後方互換性のために置いてある.

この関数は名前 xがそれに結びついた値を指定された環境にもつかどうかを吟味する.もし inheritsが TRUEで xに対する値が指定環境に見つからなければ,xが見つかるまで環境の囲みフレームが調べられる.環境とそれらの囲み環境の詳細は environmentとマニュアル ‘R Language Definition’を見よ.

警告: inherits = TRUEは Rの既定動作であるが Sでは異なる.

もし modeが指定されるとその方のオブジェクトだけが探される. modeはコレクション"numeric"と "function"の一つを指定しているかもしれない(modeを見よ):コレクションの任意のメンバーが十分である. (これはコレクションの一つのメンバーが指定された時も正しく,従って例えば mode = "special"は任意の関数のタイプを探す.)

Page 177: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

exists 177

Value

exists(): 論理値で,正しい名前とモードのオブジェクトが見つかれば,そしてその時だけ真.

get0(): もし exists(x, *)が真ならばオブジェクト—get(x, *)が返すような—,さもなければ ifnotfound.

Note

get0()を用いた読みやすいが少々非効率的な

if (exists(myVarName, envir = myEnvir)) {r <- get(myVarName, envir = myEnvir)## ... r を処理する ...

}

の代わりに,そして次のようなより効率的(そして少々わかりにくい)なコードが使える

if (!is.null(r <- get0(myVarName, envir = myEnvir))) {## ... r を処理する...

}

References

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

See Also

get. 全く異なる種類の存在チェック,つまりもし関数引数が与えられている時,はmissing;そして今一つの種類,つまりファイルが存在するか, file.exists.

Examples

## 必要なら代入関数を定義する:if(!exists("some.fun", mode = "function"))

some.fun <- function(x) { cat("some.fun(x)\n"); x }search()exists("ls", 2) # ls が pos=3 中にあるにもかかわらず真exists("ls", 2, inherits = FALSE) # 偽

## これらは(殆どの環境で)真:identical(ls, get0("ls"))identical(NULL, get0(".foo.bar.")) # 既定 ifnotfound = NULL (!)

Page 178: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

178 expand.grid

expand.grid Create a Data Frame from All Combinations of Factors

Description

与えられたベクトルもしくは因子のすべての組み合わせからなるデータフレームを作る.これが行われる正確な詳細については返り値の詳細を見よ.

Usage

expand.grid(..., KEEP.OUT.ATTRS = TRUE, stringsAsFactors = TRUE)

Arguments

... ベクトル,因子又はこれらを含むリスト.

KEEP.OUT.ATTRS 論理値で "out.attrs" 属性(下を見よ) を計算し返すべきかどうかを指示する.

stringsAsFactors

論理値で文字列ベクトルを因子に変換すべきかどうかを指示する.

Value

提供された因子の各組み合わせが一つの行であるデータフレーム.最初の因子が最も速く変化する.もし名前付き引数かリストの名前付き成分が与えられれれば列は因子でラベルが付けられる.行名は‘自動的’に付く.

属性 "out.attrs"はリストで predictメソッドによって使うための次元と次元名を与える.

Note

因子への変換はそれらが文字列ベクトルに登場する順序で行われる (因子への変換時には最も普通のアルファベット順ではなく).

References

Chambers, J. M. and Hastie, T. J. (1992) Statistical Models in S. Wadsworth & Brooks/Cole.

See Also

一度に m 個を取った n 個の要素のすべての組み合わせの生成には combn (パッケージutils).

Examples

require(utils)

expand.grid(height = seq(60, 80, 5), weight = seq(100, 300, 50),sex = c("Male","Female"))

x <- seq(0, 10, length.out = 100)y <- seq(-1, 1, length.out = 20)d1 <- expand.grid(x = x, y = y)

Page 179: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

expression 179

d2 <- expand.grid(x = x, y = y, KEEP.OUT.ATTRS = FALSE)object.size(d1) - object.size(d2)##-> 5992 又は 8832 (32- / 64-ビットプラットフォーム上)

expression Unevaluated Expressions

Description

モード "expression"のオブジェクトを作る,検査する.

Usage

expression(...)

is.expression(x)as.expression(x, ...)

Arguments

... expression: Rオブジェクトで,典型的には呼び出し,シンボルもしくは定数.as.expression: メソッドに渡される引数.

x 任意の Rオブジェクト.

Details

ここでは‘表現式’は数学的表現というその口語的な意味では使われていない.これらはRの呼び出し(callを見よ)で,R表現式ベクトルは例えば parseが返すような呼び出し,シンボル等のリストである.

モード "expression"のオブジェクトはリストなので, [, [[又は $で部分操作が出来る.後者の二つは個別の呼び出しを取り出す.これらの演算子の置き換え形式は要素を置き換えたり消去することに使える.

expression と is.expression はプリミティブな関数である. expression は‘特殊’である:それはその引数を評価しない.

Value

expressionは型 "expression"のベクトルを返し,その引数(未評価)を含む.

is.expression はもし expr が表現式オブジェクトならば TRUE を,さもなければ FALSEを返す.

as.expressionはその引数を表現式オブジェクトに強制変換しようと試みる.これは総称的であり,唯一の既定メソッドはここで説明されている. (既定メソッドはas.vector(type = "expression")を呼び出し,従って as.vectorに対するメソッドを選択適用するかもしれない. NULL,呼び出し,シンボル(as.symbolを見よ)そして対リストは長さ1の表現式ベクトルの要素として返される.原子的なベクトルは要素ごとに表現式ベクトル中に配置される (一切の名前無しで):リストの型は(すべての属性を保ったまま)表現式ベクトルに変更される.他の型は現在サポートされていない.

Page 180: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

180 Extract

References

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

See Also

call, eval, function. 更に数学表現のプロットには textと legend.

Examples

length(ex1 <- expression(1 + 0:9)) # 1ex1eval(ex1) # 1:10

length(ex3 <- expression(u, v, 1+ 0:9)) # 3mode(ex3 [3]) # 表現式mode(ex3[[3]]) # 呼び出しrm(ex3)

Extract Extract or Replace Parts of an Object

Description

ベクトル,行列,配列,そしてリストに作用し,一部分を取り出したり置き換える.

Usage

x[i]x[i, j, ... , drop = TRUE]x[[i, exact = TRUE]]x[[i, j, ..., exact = TRUE]]

getElement(object, name)

x[i] <- valuex[i, j, ...] <- valuex[[i]] <- valuex$i <- value

Arguments

x, object 要素を取り出したり,置き換えるオブジェクト.

i, j, ... 取り出す,または置き換える要素を指定する添字.添字は numericか character ベクトル,または空(欠損)もしくは NULL.数値変数はas.integerを用いて (従ってゼロへ向かって切り詰められる)整数に強制変換される.文字列ベクトルはオブジェクトの namesとマッチングされる(もしくは行列/配列に対しては the dimnames と): 詳細は以下の‘文字添字’を見よ.[による添字操作についてだけ: i, j, ... は論理値ベクトルであってよく,選択すべき要素/切片を指示する.そうしたベクトルは必要なら対

Page 181: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Extract 181

応する範囲にマッチするまでリサイクルされる. i, j, ... はまた負整数でもよく,選択から除外すべき要素/切片を指示する.[により配列を添え字操作する際は,単一の引数 iは xの次元と同じ数の行を持つ行列でも良い.結果はすると iの各行中の添字の集合に対応する要素を持つベクトルになる.

添字値 NULLはあたかもそれが integer(0)であるかのように扱われる.

name 文字通りの文字列や name (backtickで引用化されているかもしれない).取り出しにたいしては,これは普通 (以下の ‘Environments’を見よ)オブジェクトの namesに部分マッチングされる.

drop 行列や配列用.もし TRUE ならば,結果は可能な最小の次元(実例を見よ)に強制変換される.これは要素の取り出しに対してだけ有効で,置き換えには無効である.詳細は dropを見よ.

exact 文字列ベクトルにより取り出す際に [[の可能な部分マッチングを制御する(多くのオブジェクトに対して,しかし以下の ‘環境’ を見よ).既定では部分マッチングをしない.値 NAは部分マッチングを許すが,もしそうなれば警告が出る.値 FALSEは警告なしに部分マッチングを許す.

value 典型的には xと類似したクラスの配列風 Rオブジェクト.

Details

これらの演算は総称的である.特定のオブジェクトクラスに対する添字操作を処理するメソッドを書くことが出来る.InternalMethodsや [.data.frameそして [.factorを見よ.ここでの記述は既定のメソッドだけに当てはまる.置き換え関数 [<-, [[<-そして $<-が表現式の付値側に置かれるときは個別にメソッドが必要になることを注意しよう.

[, [[そして $の最も需要な違いは [はひとつ以上の要素を選択できるが,他の二つはひとつの要素を選ぶことである.

既定メソッドは原子的ベクトル,行列/配列,そして再帰的(リスト風, is.recursive)オブジェクトを参照)に対して少々異なった作用を持つので,以下の再帰的オブジェクトの節だけで議論される.

部分操作(空インデックスを除く)は names, dimそして dimnamesを除くすべての属性を取り除く.

添字操作は取り出しに対しては表現式の右辺,置き換えに対しては左辺に置くことが出来る.添字表現が付値の左辺に登場する(部分付値として知られている)と xの一部分が付値の右辺の値で置き換えられる.この場合文字添字の部分マッチングは行われず,左辺は値を受け入れるため必要に応じて強制変換される.ベクトルに対しては,結果は xと valueの型の順序 raw < logical < integer < double < complex < character < list < expressionで高い方になる.属性は(names, dimそして dimnamesは適当に調整されるが)保存される.部分付値は逐次的に行われるので,ある添字が複数回指定されるとその添字に対して最後に付値される値が結果になる.

(例えば関数のような)部分操作ができないオブジェクトにこれらの操作のいずれかを適用するとエラーになる.

原子ベクトル

添字操作の通常の形式は [である.[[は単一の要素を属性 names抜きで選択するのに使うことが出来る.一方で c(abc = 123)[1]の様に [は属性を保存する.

添字オブジェクト iは数値,論理値,文字もしくは空で良い.因子による添字操作は可能で,プリントされる文字値(このためには [as.character(i)]を使う)ではなく数値コード (factorを参照)による添字操作と同値である.

Page 182: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

182 Extract

空の添字はすべての値を選択する:これはすべての項目を置き換えるが attributesを保存する際に最もしばしば使われる.

行列と配列

行列と配列は次元属性を持つベクトルであり,単一の添字を持つすべてのベクトルの添字操作法が使える.結果は名前無しのベクトルになる.例外は xが 1次元の時で,結果は1次元配列になる.

k-次元配列の添字操作の一番普通の添字操作の形式は k 個の添字を [に与えることである.ベクトル添字操作と同じく,添字は数値,論理値,文字,空もしくは因子でも良い.空の添字(コンマで区切られた空白)添字はその次元のすべての項目が選択されたことを意味する.引数 dropはこの添字操作形に適用される.

添字操作の三つ目の形式は各次元毎に一つの列を持つ数値行列を使う:添字行列の各行はすると配列の一つの要素を選択し,結果はベクトルになる.添字行列には負の添字は許されない.NAとゼロは許される:ゼロを含む添字行列の行は無視されるが, NAを含む行は NAという結果になる.

各次元毎に一つの列を持つ文字行列を使う添字操作はもし配列が次元名を持てば使用できる.数値行列を使った場合と同様に,添字行列の各行が配列の一つの列を選択する.添字はふさわしい次元名に対してマッチングされる. NAが使え,結果は NAになる.マッチしない添字及び空文字列 ("")は許されずエラーとなる.

行名(もしあれば)が結果の名前を与えるように添字化される時,行列添字操作で得られるベクトルは xが1次元でない限り名前を持たない.

再帰的(リスト風)オブジェクト

[による添字操作は原子的ベクトルに似ており,指定された要素からなるリストを選択する.

[[と $は共にリストの単一の要素を選択する.主な違いは $は計算する添字を認めないが, [[は認める点である.x$nameは x[["name", exact = FALSE]]と同値である.また,[[の部分マッチングの挙動は exact引数を使って制御出来る.

getElement(x, name) は x[[name, exact = TRUE]] の号類であり,形式的クラスをもつ(S4)オブジェクトに対し slot(x, name)を返すので,より幅広いリスト風オブジェクトへのアクセスを提供する.

[と [[は時折 callsと expressionといった他の再帰的オブジェクトに適用される.対リストは [で取り出しされるときはリストに強制変換されるが,三つすべての演算が置き換えに使える.

[[はリストに再帰的に適用できるので,もし単一の添字 iが長さ pのベクトルならば,alist[[i]]は最後の添字操作以外の結果がすべてリストであれば,alist[[i1]]...[[ip]]と同値である.

三つのすべての種類の置き換えで,値 NULLはリストの対応項目を消し去ることを注意しよう.項目を NULLに設定するには x[i] <- list(NULL)とする必要がある.

$<-が NULLである xに適用されると.それは先ず xを list()に強制変換する.これはまた,置き換え値 valueが1より大きな長さを持つとき [[<-で起きることでもある.もしvalueが長さ 1か 0ならば,xは最初型 valueの長さゼロのベクトルに強制変換される.

環境

$と [[はともに環境に適用できる.文字添字だけが許され,部分マッチングはされない.こうした演算子の構文は get(i, env = x, inherits = FALSE)のようになる.マッチするものがないと NULLが返される.置き換え版の $<-と [[<-もまた使える.再び文字引

Page 183: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Extract 183

数だけが許される.この場合の構文は assign(i, value, env = x, inherits = FALSE)のようになる.そうした付値は新しい結合を作り出したり,xの既存の結合を変更したりする.

添字操作における NA

取り出しにおいて,数値,論理値もしくは文字の NA添字は未知の要素を選択し,従って対応する論理値,整数,数値,複素数値もしくは文字の NA,リストならば NULLを結果として返す. (バイト型に対しては 00を返す.)

置き換え(つまり付値の左辺値とした添字操作で使用)では NA は置き換えるべきいかなる値も選択しない.右辺値のどの要素が使われるべきかについて曖昧さがあるので,これはもし右辺値が長さ1の時だけ許される (従って二つの解釈は同一の結果を持つであろう). (ドキュメント化された Sの挙動では NA置き換え添字は ‘どこにも行かない’がvalueの一つまでの要素を使う: Becker et al p. 359.しかしながら,それは他の移植ではこれまで真ではなかった.)

引数のマッチング

これらの演算子はその添字引数を標準的な仕方ではマッチングしないことを注意すべきである:引数名は無視され位置のマッチングだけが使われる.従って m[j = 2, i = 1]は m[2, 1]と同地であり, m[1, 2]と等しくはない.

このことはそれらに対して定義されたメソッドには当てはまらないかもしれない.例えば [.data.frameで説明されている data.frameメソッドに対しては正しくない.これはもし iまたは jが名前付きなら警告がだされ,その場合はドキュメント化されていない動作をする.

混乱を避けるために,添字引数に名前を使わないようにしよう (しかし dropと exactは名前を持たねばならない).

S4メソッド

これらの演算子はまた暗黙のうちに S4総称的であるが,プリミティブであるため, S4メソッドは S4オブジェクトの xにだけ選択適用される.

$と $<-演算子の暗黙の総称性は,文法が name引数としてシンボルや文字定数だけを認めるため,それらのシグネチャ中に nameを持たない.

文字添字

文字添字はある種の状況では部分設定されるオブジェクトの名前もしくは次元名に部分的にマッチングされることが出来る (しかし部分付値に対しては決して行われない). S(Becker et al p. 358)) とは異なり, R は [ で取り出す際には決して部分マッチングを行わず,部分マッチングは既定では [[により使われない(引数 exactを見よ).

従って既定の動作では $で再帰的オブジェクトから取り出す時(環境を除く)だけ部分マッチングを使う.この場合ですら options(warnPartialMatchDollar = TRUE)で警告を出すことが出来る.

空の ("")引数も NA引数もいかなる名前にもマッチしない.空もしくは欠損した名前にすらである.もしあるオブジェクトが名前や適当な次元名を持たなければ,それらはすべて ""とされ,従って何物にもマッチしない.

References

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

Page 184: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

184 Extract

See Also

名前へのマッチングについては names,そして部分マッチングについては pmatch.

list, array, matrix.

データフレームと因子に対する操作の挙動に対する [.data.frameと [.factor.

演算子の優先順序については Syntax,添字操作の詳細はマニュアル‘R Language Defini-tion’.

nullオブジェクトの添字操作は NULL.

Examples

x <- 1:12m <- matrix(1:6, nrow = 2, dimnames = list(c("a", "b"), LETTERS[1:3]))li <- list(pi = pi, e = exp(1))x[10] # x の10番目の要青x <- x[-1] # x の最初の要素を削除m[1,] # 行列 m の最初の行m[1, , drop = FALSE] # 1 行の行列m[,c(TRUE,FALSE,TRUE)] # 論理添字操作m[cbind(c(1,2,1),3:1)] # 行列数値添字ci <- cbind(c("a", "b", "a"), c("A", "C", "B"))m[ci] # 行列文字添字m <- m[,-1] # m の最初の列を削除li[[1]] # リスト li の最初の要素y <- list(1, 2, a = 4, 5)y[c(3, 4)] # y の要素 3 と 4 を含むリストy$a # a という名前の y の要素

## 非整数添字は打ち切られる:(i <- 3.999999999) # "4" is printed(1:5)[i] # 3

## 名前付きの原子ベクトル, "[" と "[[" を比較:nx <- c(Abc = 123, pi = pi)nx[1] ; nx["pi"] # 名前を保存, "[[" は保存しない:nx[[1]] ; nx[["pi"]]

## recursive indexing into listsz <- list(a = list(b = 9, c = "hello"), d = 1:5)unlist(z)z[[c(1, 2)]]z[[c(1, 2, 1)]] # both "hello"z[[c("a", "b")]] <- "new"unlist(z)

## 環境に対して $ と [[ を比較e1 <- new.env()e1$a <- 10e1[["a"]]e1[["b"]] <- 20e1$bls(e1)

## 部分マッチング - もしかすると警告あり:stopifnot(identical(li$p, pi))op <- options(warnPartialMatchDollar = TRUE)

Page 185: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Extract.data.frame 185

stopifnot( identical(li$p, pi), #-- 警告inherits(tryCatch (li$p, warning = identity), "warning"))

## 警告オプションを反転if(is.null(op[[1]])) op[[1]] <- FALSE; options(op)

Extract.data.frame Extract or Replace Parts of a Data Frame

Description

データフレームの一部分を取り出す,置き換える.

Usage

## S3 method for class 'data.frame'x[i, j, drop = ]## S3 replacement method for class 'data.frame'x[i, j] <- value## S3 method for class 'data.frame'x[[..., exact = TRUE]]## S3 replacement method for class 'data.frame'x[[i, j]] <- value## S3 method for class 'data.frame'x$name## S3 replacement method for class 'data.frame'x$name <- value

Arguments

x データフレーム.

i, j, ... 取り出したり置き換える要素. [と [[に対しては,これらは numericか characterもしくは, [御身に対しては空,数値の値は as.integerによるかのように強制変換される.[による置き換えでは論理値行列が許される.

name 文字通りの文字列,もしくは name (backtickで引用化されているかもしれない).

drop 論理値.もし TRUEなら結果は可能な最小の次元に強制変換される.既定ではもし一つの列だけが残っていれば捨てられるが,一つの列だけが残っていれば捨てられ無い.

value 適当な置き換え値:必要ならすべての回数繰り返され強制変換されるかもしれない:強制変換の節を見よもし NULLなら,単一の列が選択されていれば列を消す.

exact 論理値:[を見よ,そして列名に適用せよ.

Details

データフレームは何種類ものモードで添字操作が出来る.[と [[が単一の添字ベクトルとともに(x[i]または x[[i]]),データフレームはあたかもそれがリストであるかのように操作される.この用法では drop引数は警告とともに無視される.

Page 186: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

186 Extract.data.frame

$に対する data.frameメソッドは xをリストとして扱うが,(R-3.1.0のように) nameの xの名前への部分マッチングは警告を生むであろう:これは将来のバージョンではエラーになるかもしれない.置き換えメソッドは正しい行数に対して valueをチェックし,必要ならそれを置き換える.

[と [[が二つの添字(x[i, j]と x[[i, j]])とともに使われると,それらは行列の添字操作と同様に動作する: [[は一つの要素だけを選択するのに使われる.選択された各列(例えば xj)に対し,(もしそれが行列風でなければ)典型的には結果の列は xj[i]になる.そして従って対応する [メソッドに依存する.実例の節を参照せよ.

もし [ がデータフレームを返すならば,それはユニーク(で欠損しない)な行名を持ち,必要なら make.uniqueを用いて行名が変換される.同様にもし列が選択されると,必要なら列名がユニークになるように変換される(例えばもしある列が複数回選択されたり,データフレームが重複する列名を持つとき,与えられた名前の列が複数選択された時など).

drop = TRUE の時は,これはデータフレームに含まれる行列の部分設定ばかりでなく,データフレーム自体にも適用される.

置き換えメソッドは存在しない列(複数可)を指定することで列を加えるのに使うことが出来る.この場合列はデータフレームの右端に付け加えられ,数値添字は存在する添字に隣接しなければならない.他方で,行は現在の最後の行の後の任意の行に付け加えることが出来る.そして列は欠損値で埋められるかもしれない.添字における欠損値は置き換えでは認められない.

[ に対しては置き換え値はリストであっても良い:リストの各要素が一つの列(の一部分)を置き換え,必要ならリストはリサイクルされる.もし数値で指定された列が生成されると,対応するリスト要素の名前(もしあれば)が列の名前に使われる.もし置き換えが行を選択しなければ,リスト値は NULL要素を含んでもよく,対応する列が削除される. (実例を見よ.)

[を用いた行列添字操作(論理値または2列の整数行列 iを用いた x[i])は勧められない.取り出しに対しては, xは先ず行列に強制変換される.置き換えに対しては,論理値行列添字は xと同じ次元でなければならない.置き換えはいっときに一行ずつなされ,多重の型変換を伴うことがある.

[と [[による取り出しメソッドは行名と部分的にマッチする.既定では列名には部分的マッチングはされないが,もし exact = FALSE (そして exact = NAなら警告付きで)ならば [[は部分的マッチングを行う.もし行名に正確にマッチングを行いたいなら,実行例におけるように matchを使う.

Value

[に対してはデータフレーム,リストもしくは単一の列(後の二つは次元が捨て去られているときだけ).もし行列添字操作が取り出しに使われるとベクトルが返される.未定義の列が選択されると(データフレームには’欠損’列の一般的な概念が無いから)もし結果がデータフレームならばエラーになる.さもなければ,もし単一の列が選択され,これが未定義なら,結果は NULLとなる.

[[ に対してはデータフレームの列か NULL (一つの添字による取り出し),もしくは長さ1のベクトル (二つの添字による取り出し).

$に対しては,データフレームの列(または NULL).

[<-, [[<-そして $<-に対してはデータフレーム.

強制変換

置き換え値がいつ強制変換されるかは複雑な話になる.そして Rの発展に従い変化してきている・この節は概略にすぎない.

Page 187: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Extract.data.frame 187

[と [[が列全体を加えるか置き換えるのに使われるときは強制変換はされないが,もし正確な繰り返し回数が使われるのなら valueは正しい長さまで(総称的関数 repを用い)複製される.

[が論理値行列とともに使われるときは,各値はそれが置き換えられる列の型に強制変換される.

[と [[が二つの添字とともに使われるときは,列は値を収容できるよう必要に応じて変換される.

置き換え値が配列(行列を含む)の時は,それは (data.frameと as.data.frameがそうするように)列の系列としては扱われず単一の列として挿入される.

警告

一つの行だけが残される時の既定の動作は drop = FALSEの指定と同値である.データフレームからリストに落とすには, drop = TRUEを明示的に指定する必要がある.

dropと exact以外の引数は名前付きであってはならない:もし名前付きで挙動がここで説明されたのと異なれば警告がでる.

See Also

しばしばより簡単な抜き出しには subset, data.frame, Extract.

Examples

sw <- swiss[1:5, 1:4] # 扱いやすい部分集合を選ぶ

sw[1:3] # 列を選択sw[, 1:3] # 同じsw[4:5, 1:3] # 行と列を選択sw[1] # 一列のデータフレームsw[, 1, drop = FALSE] # 同じsw[, 1] # (名前無しの)ベクトルsw[[1]] # 同じ

sw[1,] # 一行のデータフレームsw[1,, drop = TRUE] # リスト

sw["C", ] # 部分マッチsw[match("C", row.names(sw)), ] # 正確なマッチ無しtry(sw[, "Ferti"]) # 列名は正確にマッチしなければならない

swiss[ c(1, 1:2), ] # 重複した行,ユニークな行名が生成される

sw[sw <= 6] <- 6 # 論理行列による添字操作sw

## adding a 列sw["new1"] <- LETTERS[1:5] # 文字列の列を加えるsw[["new2"]] <- letters[1:5] # 同じsw[, "new3"] <- LETTERS[1:5] # 同じsw$new4 <- 1:5sapply(sw, class)sw$new4 <- NULL # 列を削除swsw[6:8] <- list(letters[10:14], NULL, aa = 1:5)

Page 188: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

188 Extract.factor

# 列6を更新,列7を削除, 付加sw

## データフレーム中の行列A <- data.frame(x = 1:3, y = I(matrix(4:6)), z = I(matrix(letters[1:9], 3, 3)))A[1:3, "y"] # a matrixA[1:3, "z"] # a matrixA[, "y"] # a matrix

## 特殊な属性を保持:## "as.data.frame" と "[" メソッドと共にクラスを使う:

as.data.frame.avector <- as.data.frame.vector

`[.avector` <- function(x,i,...) {r <- NextMethod("[")mostattributes(r) <- attributes(x)r

}

d <- data.frame(i = 0:7, f = gl(2,4),u = structure(11:18, unit = "kg", class = "avector"))

str(d[2:4, -1]) # 'u' keeps its "unit"

Extract.factor Extract or Replace Parts of a Factor

Description

因子の一部分を取り出したり置き換える.

Usage

## S3 method for class 'factor'x[..., drop = FALSE]## S3 method for class 'factor'x[[...]]## S3 replacement method for class 'factor'x[...] <- value## S3 replacement method for class 'factor'x[[...]] <- value

Arguments

x 因子

... 添字の指定 – Extractを見よ.

drop 論理値.もし真なら未使用の水準は捨て去られる.

value 文字列: 水準の集合.因子値は文字列に強制変換される.

Page 189: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Extremes 189

Details

未使用水準が捨て去られる場合,残りの水準の順序は保たれる.

もし valueが levels(x)中になければ,欠損値が警告とともに付値される.

因子に付値された contrastsは drop = TRUEでない限り保存される.

[[メソッドは引数 exactをサポートする

Value

drop = TRUEでない限り,xと同じ水準集合の因子.

See Also

factor, Extract.

Examples

## example(factor) に続く(ff <- factor(substring("statistics", 1:10, 1:10), levels = letters))ff[, drop = TRUE]factor(letters[7:10])[2:3, drop = TRUE]

Extremes Maxima and Minima

Description

入力値の(並列)最大値と最小値を返す.

Usage

max(..., na.rm = FALSE)min(..., na.rm = FALSE)

pmax(..., na.rm = FALSE)pmin(..., na.rm = FALSE)

pmax.int(..., na.rm = FALSE)pmin.int(..., na.rm = FALSE)

Arguments

... 数値もしくは文字列変数(ノートを見よ).

na.rm 欠損値を取り除くかどうかを指示する論理値.

Page 190: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

190 Extremes

Details

maxと minは引数に現れるすべての値の最大値と最小値を返す.もしすべてが整数か論理値なら integerを,もしすべてが数値なら doubleを,それ以外は文字列を返す.

もし na.rmが FALSEならば,引数中の NA値は NA値を返す.さもなければ NA値は無視される.

数値的空集合の最大値と最小値は(この順序で) +Infと -Infとなり,推移性を保証する.例えば min(x1, min(x2)) == min(x1, x2).数値の xに対しては length(x) == 0 (要求されたなら欠損値を除いた後で)であれば max(x) == -Infと min(x) == +Infとなる.しかしながら,pmaxと pminは,たとえ na.rm = TRUEでも.もしすべての並列要素が NAであっても NAを返す.

pmaxと pminは引数として一つもしくは複数のベクトル(または行列)を取り,‘並列’最大値(もしくは最小値)からなる一つのベクトルを返す.結果の最初の要素はすべての引数の最初の要素の最大(小)値, 2番目の要素はすべての引数の2番目の要素の最大(小)値,云々. (長さがゼロでない)短い入力は必要に応じてリサイクルされる. namesや dim)といった属性(attributes 参照は(可能ならば)最初の引数からコピーされる.

pmax.intと pmin.intはすべての引数が原子的ベクトルでクラスが無いときにだけ使われるより高速の内部バージョンである:すべての属性は捨て去られる.(すべてのバージョンは比較するための順序を持たないバイトベクトルと複素数ベクトルに対して失敗することを注意しよう.)

max と min は総称的関数である:それらに対するメソッドを個別にかグループ総称的Summary経由で書くことが出来る.これが上手く動作するためには,引数 ... は名前無しでなければならず,選択適用は最初の引数に対してである.

定義から NAを含む数値ベクトルの min/maxは NaNである.例外は,たとえ NaNが更に含まれていても,NAを含む任意のベクトルの min/maxは NAになる.欠損値が何であろうと最大値は Infになるが, max(NA, Inf) == NAであることを注意しよう.

文字列バージョンは辞書式順序でソートされる.そしてこれは使用中のロケールの照合列に依存する: ‘Comparison’に対するヘルプが詳細を与える.空の文字列ベクトルのmax/minは文字 NAであると定義されている.(""は最小の文字要素であるから最大は ""とすべきと考えることもできるが,最小に対する候補が無い.)

Value

minと maxに対しては長さ1のベクトル. pminまたは pmaxに対しては入力ベクトルの最長長さのベクトル,もしくは入力の一方が長さゼロならば長さはゼロになる.

結果の方は階層 integer < double < characterで最高になる入力のそれになる.

数値入力だけがありすべてが空(可能な NAの除去後)ならば, minと maxに対する結果は倍精度実数 (Infまたは -Inf)となる.

S4メソッド

maxと minは S4 Summaryグループ総称的である.それらに対するメソッドはシグネチャx, ..., na.rmを使わなければならない.

Note

‘数値’引数は整数,数値,論理値(整数に強制変換)型ベクトルである.歴史的な理由からNULLは integer(0)と同値とされる.

pmaxと pminはまた適当な比較メソッドを持つクラス is.naと rep (引数のリサイクルが必要なとき)とともに使うことが出来る.

Page 191: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

extSoftVersion 191

References

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

See Also

arg minに対して,range (minと max双方)と which.min (which.max),つまり極値が生じる位置.

プロットの注釈中の minには ‘plotmath’.

Examples

require(stats); require(graphics)min(5:1, pi) #-> 一つの数pmin(5:1, pi) #-> 5つの数

x <- sort(rnorm(100)); cH <- 1.35pmin(cH, quantile(x)) # 名前無しpmin(quantile(x), cH) # 名前を持つplot(x, pmin(cH, pmax(-cH, x)), type = "b", main = "Huber's function")

cut01 <- function(x) pmax(pmin(x, 1), 0)curve( x^2 - 1/4, -1.4, 1.5, col = 2)curve(cut01(x^2 - 1/4), col = "blue", add = TRUE, n = 500)## pmax(), pmin() は*最初の*引数の属性を保つD <- diag(x = (3:1)/4) ; n0 <- numeric()stopifnot(identical(D, cut01(D) ),

identical(n0, cut01(n0)),identical(n0, cut01(NULL)),identical(n0, pmax(3:1, n0, 2)),identical(n0, pmax(n0, 4)))

extSoftVersion Report Versions of Third-Party Software

Description

使われている(外部)サードパーティーのソフトウェアのバージョンを報告する.

Usage

extSoftVersion()

Details

市揚州のサードパーティのソフトウェアのレポート.これらはしばしば外部的であるがインストール時に Rに組み込まれる可能性もある.

ダイナミックなリンクでは,これらは今のセッションにリンクされたライブラリのバージョンである:静的なリンクではコンパイル時に組み込まれたそれである.

Page 192: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

192 factor

Value

名前付き文字列ベクトルで現在次の成分を持つ

zlib 使用中の zlibのバージョン.

bzlib 使用中の bzlib (bzip2から)のバージョン.

xz 使用中の liblzma (xzから)のバージョン.

PCRE 使用中の PCREのバージョン.

ICU 使用中の ICUのバージョン(もしあれば,さもなければ "").

TRE 使用中の libtreのバージョン.

iconv 使用中の iconvの実装とバージョン(もしわかれば).

bzlibと pcreに対する値は通常バージョンと並んで日付を含み,treのそれは空白で分離された幾つかの項目を含み,バージョン番号は二番目である.

iconvに対してはこれはバージョンと並んで実装を与える.例えば "GNU libiconv 1.14","glibc 2.18"又は "win_iconv" (バージョン番号はない).

See Also

libCurlのバージョンは libcurlVersion.

使用中の LAPACKのバージョンは La_version.

サードパーティのグラフィックスソフトウェアについては grSoftVersion.

Tcl/Tkのバージョンについては tclVersion.

PCREのコンフィギュレーションのオプションについては pcre_config.

Examples

extSoftVersion()## PCRE のバージョンsub(" .*", "", extSoftVersion()["PCRE"])

factor Factors

Description

関数 factorはベクトルを因子にエンコードするために使われる(因子はまた ‘カテゴリー’や ‘列挙型’とも呼ばれる.もし引数 orderedが TRUEならば,因子水準は順序付けられていると仮定される.Sとの互換性のためまた関数 orderedがある.

is.factor, is.ordered, as.factorそして as.orderedはこれらのクラスのための所属検査と強制変換のための関数である.

Page 193: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

factor 193

Usage

factor(x = character(), levels, labels = levels,exclude = NA, ordered = is.ordered(x), nmax = NA)

ordered(x, ...)

is.factor(x)is.ordered(x)

as.factor(x)as.ordered(x)

addNA(x, ifany = FALSE)

Arguments

x データのベクトル,普通少数の異なった値を持つ.

levels xが取るかもしれない値(文字列として)のオプションのベクトル.既定は as.character(x)により取る値のユニーク集合で xの増加順にソートされている.この集合は sort(unique(x)) より小さく指定できることを注意する.

labels オプションの水準に対するラベルの文字列ベクトル (exclude中のそれらを除いた levelsと同じ順序)か,又は長さ1の文字列ベクトル.

exclude 水準集合を作る際に除外される値のベクトル.これは xと同じ型でなければならず,必要なら強制変換される.

ordered 水準が順序付けられている(与えられた順序で)と見做すべきかどうかを決める論理フラグ.

nmax 水準の数の上限;‘詳細’を見よ.

... (ordered(.) 中): ordered自体を除く上のどれか.

ifany もしそれが使われているならば NA水準だけを付け加える,つまりもしany(is.na(x))ならば.

Details

ベクトル xの方には制限がない: as.characterメソッドを持ちソート可能 (sort.listで)というだけである.

順序付き因子は因子とクラスだけが異なるが,メソッドとモデル当てはめ関数は二つのクラスを非常に異なったものとして扱う.

ベクトルのエンコーディングは次のように行われる.最初に exclude中の値が levelsからすべて取り除かれる.もし x[i]が levels[j]に等しければ,結果の i番目の要素は jになる.もし levels中に x[i]にマッチするものがなければ (これは除外値に対して起こる),結果の i番目の要素は NAに設定される.

普通結果の属性として使われた‘水準’は exclude中の物を除いた水準の縮小集合であるが,これは labelsを与えることで変更できる.これは水準に対する新しいラベル集合であるか,又は文字列である.後者の場合水準はその文字列に続き番号を加えたものになる.

因子に適用された factor(x, exclude = NULL)は未使用の水準が無い限り何もしない:未使用の水準があれば縮小された水準集合が返される.もし excludeが使われれば,そ

Page 194: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

194 factor

れはまた x と同じ水準集合を持つ因子か,除外される水準に対するコードの集合である.

因子に対するコードは NAを含んで良い.数値の xに対しては,NAを追加の水準にするためには exclude = NULLを設定する(<NA>とプリントされる);既定ではこれは最後の水準になる.

もし NAが水準の一つならば,欠損値(欠損水準のコードに対立するものとして)に対するコードを設定する方法は付値の左辺値として is.naを使うことである (is.na(f)[i] <- TRUEのように;is.na内部での添字操作は使えない).こうした状況の下では,欠損値は現在<NA>とプリントされる,つまり水準 NAの項目と同じになる.

is.factorは総称的である:オブジェクトの特定のクラスを処理するメソッドを書くことが出来る,InternalMethodsを見よ.

levelsが与えられないと uniqueが呼び出される.因子は典型的には非常に少数の水準を持つため,大きなベクトル xに対してはユニークな値の数の上限として nmaxを与えるのは有用である.

Value

factorはクラス "factor"のオブジェクトを返す.これは xの長さ,モード characterの"levels"属性,そしてユニーク (!anyDuplicated(.)) な項目を持つ.もし引数 orderedが真なら(もしくは ordered()が使われると)結果はクラス c("ordered", "factor")を持つ.

factorを順序付き又は順序無しの因子に適用すると(同じ型の)因子で実際に出現する水準だけの因子を返す:またこれを実現するより見やすい方法は [.factorを見よ.

is.factor は TRUE 又は FALSE をその引数が因子かどうかに応じて返す.対応して,is.orderedはその引数が順序付きならば TRUEを,さもなければ FALSEを返す.

as.factorはその引数を因子に強制変換する.これは factorの省略形である.

as.ordered(x)はもし xが順序付きならば xを返し,さもなければ ordered(x)を返す.

addNAは NAを追加の水準に加える (例えばそうすることで NA値が表にカウントされるように)ことで因子を変更する.

警告

因子の解釈はコードと "levels" 属性の双方に依存する.同じ水準集合(そして同じ順序)を持つ因子だけを比較するように注意しよう.特に因子に適用された as.numericは無意味であり,暗黙の強制変換が起きてしまうことがある.因子 fを近似的に元の数値に変換するには as.numeric(levels(f))[f]が推奨され, as.numeric(as.character(f))より少し効率的である.

因子の水準は既定ではソートされているが,ソートの順序は作成時のロケールに依存する可能性があり,アスキーと仮定されるべきではない.

NAを水準として持つ因子に関しては幾らかの例外がある.これらは稀にしか使わないことが推奨される,例えば作表を意図した場合だけに使う.

比較演算子とグループ総称的メソッド

グループ総称的な Opsに対しては "factor"と "ordered"メソッドがあり,比較演算子に対するメソッドを提供する.そして min, maxそして range総称関数 "ordered"の Summary中にある.(グループの残りと Mathグループは因子に対しては無意味でありエラーを引き起こす.)

因子に対しては ==と !=だけが使える:因子は同じ水準集合を持つ他の因子(必ずしも同じ順序でなくても良い)や文字列ベクトルとだけ比較可能である.順序付き因子は同様

Page 195: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

factor 195

に比較できるが,一般的な選択適用機構は順序付き因子と順序なし因子の比較を除外する.

すべての比較演算子が順序付き因子に対して使うことが出来る.照合は被演算項の水準によってなされる:もし双方の被演算項が順序付きならば同じ水準集合を持たなければならない.

Note

以前のバージョンの Rでは,もし繰り返しの割合が小さくても,文字列を因子として保管するほうがスペースが少なくてすんだ.しかしながら今では同一の文字列は保管場所を共有するため,殆どの場合差は小さい. (整数値は4バイトで保管される一方,文字列への各参照は4又は8バイトのポインターを必要とする.)

References

Chambers, J. M. and Hastie, T. J. (1992) Statistical Models in S. Wadsworth & Brooks/Cole.

See Also

因子の部分操作は [.factor.

釣り合い型因子の構成には gl.そして指定した対比を持つ因子には C.水準にアクセスするには levelsと nlevels,そして整数コードを得るには unclass.

Examples

(ff <- factor(substring("statistics", 1:10, 1:10), levels = letters))as.integer(ff) # 内部コード(f. <- factor(ff)) # 生起しない水準を捨てるff[, drop = TRUE] # 同じことをもっと明瞭に

factor(letters[1:20], labels = "letter")

class(ordered(4:1)) # "ordered", "factor" から継承z <- factor(LETTERS[3:1], ordered = TRUE)## そして "relational" メソッドが使える:stopifnot(sort(z)[c(1,3)] == range(z), min(z) < max(z))

## "NA" を水準として使いたいとする.そして欠損値を許す.(x <- factor(c(1, 2, NA), exclude = NULL))is.na(x)[2] <- TRUEx # [1] 1 <NA> <NA>is.na(x)# [1] FALSE TRUE FALSE

## addNA() を使うMonth <- airquality$Monthtable(addNA(Month))table(addNA(Month, ifany = TRUE))

Page 196: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

196 file.access

file.access Ascertain File Accessibility

Description

ユーザのファイルシステムにあるファイルに関する情報にアクセスするユーティリティ関数.

Usage

file.access(names, mode = 0)

Arguments

names ファイル名を含む文字列ベクトル.チルドの拡張が行われる:path.expandを見よ.

mode 要求されるアクセスモードを指定する整数:‘詳細’を見よ.

Details

mode値はvalue can be the exclusive or of the following values

0 存在のテスト.

1 実行許可のテスト.

2 書き込み許可のテスト.

4 読み込み許可のテスト.

パーミッションは実ユーザ IDと実グループID (実効的な IDではなく)から計算される.

ファイルをオープンする前にこの関数を検査のために使うのは良い考えではないことを注意してほしい.マルチタスクのシステムではファイルのアクセス状態がfile.access() を呼び出している時とファイルのオープンを試みる時の間に変わることがあり得る.ファイルのオープンの試みを tryの中にラップする方が良い.

Value

整数ベクトルで成功なら値 0で失敗なら -1.

Note

これは S-PLUSの関数 access,同じ名前の C関数に対するラッパ,の代替物を意図しているおり,それから返り値のエンコーディングが由来する.返り値が successに対してfalseであることを注意する.

See Also

パーミッションに関するより詳細は file.info,パーミッションの変更には Sys.chmod,そして ‘テストしてそして眺める’アプローチには try.

シェル風のファイル検査 file_test.

Page 197: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

file.choose 197

Examples

fa <- file.access(dir("."))table(fa) # 成功と失敗を数える

file.choose Choose a File Interactively

Description

ファイルを対話的に選択する.

Usage

file.choose(new = FALSE)

Arguments

new 論理値:ユーザに提示されるダイアログボックスのスタイルを選ぶ:現在 new = FALSEだけが使われる.

Value

ファイルパスを与える長さ1の文字列.

See Also

非対話的な選択には list.files.

file.info Extract File Information

Description

ユーザのファイルシステムにあるファイルに関する情報を取り出すユーティリティ関数.

Usage

file.info(..., extra_cols = TRUE)

file.mode(...)file.mtime(...)file.size(...)

Arguments

... ファイルパスを含む文字列.チルド展開がなされる: path.expandを見よ.

extra_cols 論理値:最初の6だけでなくすべての列を返す.

Page 198: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

198 file.info

Details

何が‘ファイル’かはOS依存であるが,ディレクトリを含む. (しかしながら Windowsではディレクトリ名は末尾のバックスラッシュやスラッシュを含んではならない.)また大小文字を区別するファイルアクセスに関する file.existsのヘルプ中の節を見よ.

ファイルの‘モード’は POSIXの流儀に倣い,それぞれフィアルの所持者,保持者のグループそして任意の人物に対する三つの8進数を与える.各数字は,読む込み(4),書き込み(2),そして実行/検索(1)許可の論理和である.

殆どのシステムでシンボリックリンクは追跡され,従ってリンク自体ではなくリンクが指し示すファイルについての情報が与えられる.

Value

file.infoに対しては行名がファイル名で以下の列を持つデータフレーム

size 倍精度実数:バイト単位のファイルのサイズ.

isdir 論理値:ファイルはディレクトリか?

mode クラス "octmode"の整数.8進数のファイルのパーミッション,例えば644.

mtime, ctime, atime

クラス "POSIXct"の整数:ファイルの変更履歴,‘最後のステータス変更’そして最後のアクセス時間.

uid 整数:ファイル所有者のユーザ ID.

gid 整数:ファイルグループのグループ ID.

uname 文字列:ユーザ名と解釈された uid.

grname 文字列:グループ名と解釈された gid.

不明のユーザとグループ名は NAになる.

もし extra_colsが偽なら,最初の6つの列だけが返される:これらは単一の Cのシステム呼び出しだけからわかるのでより速い. (しかしながら適正にコンフィギュアされたシステムは名前の調査を迅速化するために ‘name service cache daemon’を使う.)

存在しないか可読でないファイルは NA になる.列 uid, gid, uname そして grname はPOSIXでない Unix風システムでは提供されないかもしれず, Windowsでは提供されないであろう.

三つのファイル時間の意味するところは OSとファイルシステムに依存する. Windowsの本来のフィアルシステムでは ctimeはファイルが作成された時間である(殆どのUnix風ファイルシステムでは記録されないもの). ‘ファイルアクセス’そして当然 ‘最後にアクセスした時間’はシステム依存である.

時間は秒の精度で報告され,恐らくある種のシステムではそれ以上の精度がある.しかしながら,多くのファイルシステムは秒単位でだけ記録し,そして2秒もしくはそれ以上の単位で記録するものもある(例えば FATシステムの修正時間).

file.mode, file.mtimeそして file.sizeは列の丁度一つを返す便宜のためのラッパである.

Note

ある種のシステムは 2Gbを超えるファイルを作ることができるがシステムコール statではアクセスできない.そうしたファイルは可読で無いと示される (そして Rのどんな入力関数でも恐らく読み取れない) –幸いそうしたファイルシステムは稀になりつつある.

Page 199: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

file.path 199

See Also

シンボルリンクを見つけるには Sys.readlink, files, file.access, list.files,そしてデータ書式については and DateTimeClasses.

パーミッションの変更には Sys.chmod.

Examples

ncol(finf <- file.info(dir())) # 少なくとも6finf # すべてのリスト## 100日以上古い物:finf <- file.info(dir(), extra_cols = FALSE)finf[difftime(Sys.time(), finf[,"mtime"], units = "days") > 100 , 1:4]

file.info("no-such-file-exists")

file.path Construct Path to File

Description

プラットフォームに依存した形式で部分からファイルへのパスを構成する.

Usage

file.path(..., fsep = .Platform$file.sep)

Arguments

... 文字列.

fsep 使用するパス分離記号.

Details

この関数は R 自体で徹底的に使われるため速度重視で実装されている (paste より速い).

これはまた fsep = .Platform$path.sepとして PATHと R_LIBSのような環境へのパスにも使われる.

Windows ファイルに対しては ‘/’ と ‘d:/’ を除いては末尾のパス分離記号は不正である(しかしながらある種の関数/ユーティリティーはそれらを受け入れる).従って R 3.1.0以来末尾の /や \は取り除かれる.

Value

もしすべての引数が正の長さを持てば fsepで分離して引数を項毎に結合して得られる文字列.さもなければ空の文字列(pasteとは異なり).

Note

Windowsでは成分は既定では /で分離される (\ではない).

Page 200: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

200 file.show

file.show Display One or More Text Files

Description

一つもしくはそれ以上の(平文の)テキストファイルをプラットフォーム固有の仕方で表示する.典型的に ‘ページャ’を利用する.

Usage

file.show(..., header = rep("", nfiles),title = "R Information",delete.file = FALSE, pager = getOption("pager"),encoding = "")

Arguments

... 一つ又はそれ以上の表示されるべきファイルの名前を含む文字列ベクトル.パスはチルド展開される.

header 表示される各ファイルのヘッダーを与える (... 中で指定されたファイルの数と同じ長さの)文字列ベクトル.既定値は空文字列.

title 表示に対する全体的なタイトル.もし単一の別個のウィンドウが表示に使われるのなら, titleはウィンドウのタイトルに使われる.もし複数のウィンドウが使われるのなら,それらのタイトルはタイトルとファイル固有のヘッダーを連結すべきである.

delete.file 表示の後にファイルを抹消すべきか?一時的ファイルに使われる.

pager 使われるページャ:すべてのプラットフォームで使われるわけではない.

encoding ファイルに仮定されるエンコーディングを与える文字列.

Details

この関数は Rのヘルプシステムの中核であるが,page等の他の目的にも同様に使える.

ページャがどのように実装されているかは高度にシステム依存である.

基本の Unixバージョンはファイルを(ヘッダーを使い)一時的ファイルに連結し,それをpager引数で選択されたページャ中に表示する.これはファイルのセットに対し実行されるシステム命令を指定する文字列である (完全なパス又は PATH上で見つかる命令).‘工場出荷’既定値は ‘R_HOME/bin/pager’の使用で,これは環境変数 PAGERで指定されるコマンドラインを実行するシェルスクリプトでその既定値はコンフィギュアの段階で設定される.通常 lessである.Unix風システムではもし pagerが空であれば moreが使われる.

殆どの GUI システムは各ファイルに対し個別のページャウィンドウを使い, R が実行を続ける間ユーザにそのままにしておかせる.そうしたページャの選択は特別な低水準コードが横取りするページャ ("internal" と Windows 上では "console")の名前を使ってなされるか, pager を R 関数 file.show の最初の四つの引数に対応する引数(files, header, title, delete.file) で呼び出し GUI とやり取りするように手配する.

OS Xの R.app GUIは pagerの設定にかかわらず内部的なページャを使う.

Page 201: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

files 201

すべての実装が delete.fileに敬意を払うわけではない.特にWindowsの外部ページャはそうであり,いつファイルに伴う外部アプリケーションが終了したかを知る手段がない.

Author(s)

Ross Ihaka, Brian Ripley.

See Also

files, list.files, help; RShowDocは type = "text"に対して file.show()を呼び出す.pdfファイルの表示には getOption("pdfviewer")と例えば systemを考慮しよう.

file.edit.

Examples

file.show(file.path(R.home("doc"), "COPYRIGHTS"))

files File Manipulation

Description

これらの関数は計算機のファイルシステムへの低水準インタフェイスを提供する.

Usage

file.create(..., showWarnings = TRUE)file.exists(...)file.remove(...)file.rename(from, to)file.append(file1, file2)file.copy(from, to, overwrite = recursive, recursive = FALSE,

copy.mode = TRUE, copy.date = FALSE)file.symlink(from, to)file.link(from, to)

Arguments

..., file1, file2

文字列ベクトル.ファイル名やパスを含む.

from, to 文字列ベクトル.ファイル名やパスを含む.file.copyと file.symlink用. toはまた単一の既存ディレクトリへのパスでも良い.

overwrite 論理値;既存の目標ファイルを上書きすべきか?

showWarnings 論理値.失敗時に警告を示すべきか?

recursive 論理値.もし toがディレクトリならば, from中のディレクトリ(とその内容)をコピーすべきか? (POSIX OSの cp -Rのように.)

copy.mode 論理値.可能ならばファイルのパーミッションビットをコピーすべきか?

copy.date 論理値.可能ならばファイルの時刻を保存すべきか? Sys.setFileTimeを見よ.

Page 202: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

202 files

Details

... 引数は一つの文字列に連結される:ファイルを別々にまた一つのベクトルで指定できる.これらのすべての関数はパス名を展開する: path.expandを見よ.

file.createはもしそれが存在しなければ与えられた名前からファイルを作り,そしてもし存在すればそれらを切り捨てる.それらは ‘umask’の設定(関係すれば)が許す最大の読み取り/書き込みパーミッションで作成される.既定ではもし操作が失敗すれば(理由と共に)警告が出る.

file.exists はその引数の名前を持つファイルが存在するかどうかを示す論理値を返す. (ここで‘存在’はシステムの stat 呼び出しの意味である:ファイルは stat が必要とするパーミッションをあなたが持つときに限り存在すると報告される.存在はまたfile.access でもチェック出来る:これは異なったパーミッションを使うかもしれず,従って異なった結果を得るかもしれない.ファイルの存在はそれが読み取り可能であることを意味しない:そのためには file.accessを使う.)何がファイルを構成するかはシステム依存であるが,ディレクトリを含むべきである. (しかしながらWIndowsではディレクトリ名は末尾のバックスラッシュやスラッシュを含むべきではない.) Unix風システムではもしファイルがシンボリックリンクならば,結果はリンク先が実際のファイルかどうかを示し,単にリンクが存在するかどうかではない.最後に,Rオブジェクの存在をチェックする別の関数 existsを注意しよう.

file.removeはその引数中の名前を持つファイルを削除しようと試みる.殆どの Unixプラットフォームでは‘ファイル’は空のディレクトリ,シンボリックリンク,fifoそしてソケットを除外する. Windowsでは‘ファイル’は正規のファイルを意味し,例えば空のディレクトリを含まない.

file.renameはファイルの名前を変更しようとする(そして fromと toは同じ長さでなければならない).ファイルのパーミッションが許せば,これは toの既存の要素を上書きする.これは OS の対応するシステムコールの制限,特に‘ファイル’の解釈,に依存する(Unix風システムの man 2 renameのようなものを見よ):殆どのプラットフォームはファイルシステムを跨がったファイルを改名しない.(Windowsでは file.renameはファイルを移動するがボリュム間のディレクトリの移動はしない.)ディレクトリの改名を許すプラットフォーム上では,典型的に fromと toの双方がディレクトリか,もしくはどちらもディレクトリであってはならず,そしてもし toが存在すればそれは空のディレクトリでなければならない.

file.appendはその第二引数の名前を持つファイルを第一引数の名前を持つそれらに付加する.異なった長さのベクトル中で与えられた名前の整列のため Rの添字リサイクル規則が使われる.

file.copyは file.appendと同じように動作するが,引数はコピーに対する自然な順序を持つ.既存の目標ファイルは overwrite = TRUE で無い限りスキップされる. to 引数は単一の既存ディレクトリを指定できる.もし copy.mode = TRUEならばファイルの読み取り/書き込みパーミッションは可能ならばコピーされるが ‘umask’で制限される.(Windowsではこれはファイルにだけ適用される. ALC等の他のセキュリティ属性はコピーされない. POSIXファイルシステムではリンク自体ではなくシンボリックリンクの目標がコピーされ,ハードリンクは別個にコピーされる.

file.symlink と file.link はそれらをサポートするファイルシステム上でシンボリックリンクとハードリンクを作る. file.symlinkに対しては to引数は単一の既存ディレクトリを指定できる.Windowsは NTFSファイルシステム上でハードリンクを持ち,最近のバージョンではシンボリックリンクに関連した概念がある:下のこのヘルプ頁のWindowsバージョンの節を見よ. FATや SMBでマウントされたファイルシステムでどうなるかは OS固有である.)

Page 203: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

files 203

Value

これらの関数は試みられた各ファイル毎にどの操作が成功したかを示す論理値ベクトルを返す.ファイルやパス名に欠損値を使うことは常に失敗と見做される.

もし showWarnings = TRUEならば file.createは予期せぬ失敗に対して警告を出す.

大・小文字を区別しないファイルシステム

大・小文字を区別しないファイルシステムはWindowsと OS Xでは規範であるが,すべての OSで見受けられる(例えば FATでフォーマットされた USBドライブは恐らく大・小文字を区別しない).

これらの関数はそうしたファイルシステム上で存在するファイルを大・小文字を区別せずにマッチすることがもっとありそうである:しかしながらこれは OS の機能であり,ファイル名を大・小文字にマップすることは可能である.

Author(s)

Ross Ihaka, Brian Ripley

See Also

file.info, file.access, file.path, file.show, list.files, unlink, basename,path.expand.

dir.create.

ファイル指定中のワイルドカードの展開には Sys.glob.

file_test, Sys.readlink.

リンクとそれらの制限については https://en.wikipedia.org/wiki/Hard_linkと https://en.wikipedia.org/wiki/Symbolic_link.

Examples

cat("file A\n", file = "A")cat("file B\n", file = "B")file.append("A", "B")file.create("A")file.append("A", rep("B", 10))if(interactive()) file.show("A")file.copy("A", "C")dir.create("tmp")file.copy(c("A", "B"), "tmp")list.files("tmp")setwd("tmp")file.remove("B")file.symlink(file.path("..", c("A", "B")), ".")setwd("..")unlink("tmp", recursive = TRUE)file.remove("A", "B", "C")

Page 204: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

204 files2

files2 Manipulaton of Directories and File Permissions

Description

これらの関数は計算機のファイルシステムへの低水準のインタフェイスを提供する.

Usage

dir.exists(paths)dir.create(path, showWarnings = TRUE, recursive = FALSE, mode = "0777")Sys.chmod(paths, mode = "0777", use_umask = TRUE)Sys.umask(mode = NA)

Arguments

path 単一のパス名を含む文字列ベクトル.チルド展開がされる(path.expandを見よ)..

paths フィアル又はディレクトリパスを含む文字列ベクトル.チルド展開がされる(path.expandを見よ)..

showWarnings 論理値;失敗辞に警告を出すか?

recursive 論理値.最後を除くパス要素を作り出すか? もし真なら Unix 命令mkdir -pのようになる.

mode Unix 風システムで使われるモード: as.octmode で強制変換される.Sys.chmodに対してはこれは pathsに沿ってリサイクルされる.

use_umask 論理値:モードは umaskの設定により制限されるべきか?

Details

dir.createは recursive = TRUEで無い限りパスの最後の要素を作成する.末尾のパス分離記号は捨てられる.モードはシステム関数 mkdirに於けるのと同様に umaskの設定で修正される.どのようなモードが設定できるかは OS依存で三つの8進数の桁以上のことを仮定するのは安全ではない.より詳細は OSのシステムコール mkdirに関するドキュメントを見よ,例えば man 2 mkdir (その名前のコマンドラインユーティリティーについてではない).

Windows の特異な点の一つがディレクトリ作成が成功したと報告されるにもかかわらず異なった名前のディレクトリが作られることである.例えば dir.create("G.S.") は‘"G.S"’を作る.これはドキュメント化されておらず,何が正しい状況なのかは不明である(Windowsのバージョンによるかもしれない).また末尾に空白の付くディレクトリ名も避けよう.

Sys.chmod は一つもしくはそれ以上のファイルのファイルパーミッションを設定する.システムがそれをサポートしていないかもしれない(警告が出された時).モードがどのように解釈されるかについては dir.createに対する説明を見よ.シンボリックリンクへのモードの変更は動作しそうもない(そして不要である).より詳細に潰えは OSのシステムコール chmodに関するドキュメントを見よ,例えば man 2 chmod (そしてその名前のコマンドラインユーティリティーについてではない).これがシンボリックリンクやそのターゲットのパーミッションを変えるどうかは OS依存である(ターゲットを変えることがより普通ではあるが,そして POSIXはシンボリックリンクに対するモードをサポートしていない:しかし BSDベースの Unixはする).

Page 205: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

find.package 205

Sys.umaskか umaskを設定し前の値を返す:特別な場合として mode = NAは単に現在の値を返す.これはサポートされていないかもしれない(警告が出て "0"が返される時).より詳細は OSのシステムコール umaskに関するドキュメントを見よ,例えば man 2 umask.

モードがどのように処理されるかはファイルシステムに依存する.これは Unix風システムでも同様である (それらのドキュメントはしばしば POSIXファイルシステムを仮定して書かれているにもかかわらず).従ってもし,例えば FAT/FAT32や network-mountedファイルシステムを使っているならばドキュメントを用心深く扱おう.

Value

dir.existsは値 TRUEか FALSEの論理値ベクトルを返す(名前はない).

dir.create と Sys.chmod は試みられた各ファイルに対し操作が成功したかを示す論理値ベクトルを不可視で返す.パス名として欠損値を使うと常に失敗と見做される.dir.createはディレクトリが既に存在すると失敗と指示する.もし showWarnings = TRUEなら dir.createは予期しない失敗に対して警告を与える(例えば欠損値でもなく recursive = TRUE)に対して既に存在する成分に対してでもなく).

Sys.umaskは umaskの前の値を返す,これは長さ1のオブジェクでクラスは "octmode"である:可視フラグは modeが NAで無い限りオフである.

path と paths の解釈に対する大・小文字を区別しないファイルシステムに関するfile.existsのヘルプの節を見よ.

Author(s)

Ross Ihaka, Brian Ripley

See Also

file.info, file.exists, file.path, list.files, unlink, basename, path.expand.

Examples

## Not run:## 許される最大のパーミッションをファイルツリー中にあてがうSys.chmod(list.dirs("."), "777")f <- list.files(".", all.files = TRUE, full.names = TRUE, recursive TRUE)Sys.chmod(f, (file.info(f)$mode | "664"))

## End(Not run)

find.package Find Packages

Description

一つもしくはそれ以上のパッケージへのパスを見つける.

Usage

find.package(package, lib.loc = NULL, quiet = FALSE,verbose = getOption("verbose"))

path.package(package, quiet = FALSE)

Page 206: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

206 findInterval

Arguments

package 文字列ベクトル.パッケージの名前.

lib.loc 探索すべき R のライブラリツリーの位置を指示する文字列ベクトル,もしくは NULL. NULLの既定値はロードされている名前空間,それから.libPaths()が現在知っているすべてのライブラリのチェックに相当する.

quiet 論理値.もしパッケージが見つからなかったら警告やエラーを与えないか?

verbose 論理値.もし TRUEなら追加の診断が与えられる.

Details

find.packageはパッケージが見つかった位置へのパスを返す.もし lib.locが NULLならライブラリの前にロードされている名前空間が探される.もしパッケージが一つ以上見つかれば,最初のマッチが使われる. quiet = TRUEで無い限り,見つからなかった名前のパッケージに関する警告が与えられる.一つもなければエラーになる.もし verboseが真なら一度以上見つかったパッケージに関する警告が与えられる.返されるべきパッケージに対しては ‘Meta’サブディレクトリか適正な version欄を含む ‘DESCRIPTION’ファイルを含む必要があるが,インストールされている必要はない(もし lib.locが適当に設定されていれば).

find.packageは普通あるパッケージが使用可能かどうかを確認する正しいツールではない:それを行う唯一の方法は requireを使ってそれのロードを試みることである.正しいプラットフォームに対してはそれはインストールされている必要はない.それは稼働中の Rのバージョンが満たさないバージョン要求を持つかもしれないし,利用できない従属性があるかもしれない,. . ..

path.packageはそこから名前付きパッケージがロードされたパスを返す.もしくはもしどれも名前付きでなければすべての現在付加されているパッケージに対するものである.quiet = TRUEで無い限りもし名前が与えられたパッケージのどれかが付加されていなければ警告が与えられ,一つもなければエラーになる.

Value

パッケージのディレクトリのパスの文字列ベクトル.

findInterval Find Interval Numbers or Indices

Description

非減少な分割点のベクトルを vecにあたえた時, xの各点を含む区間を見つける;つまり,もし i <- findInterval(x,v)なら x中の各添字 j vij ≤ xj < vij+1ここで v0 := −∞,vN+1 := +∞, そして N <- length(v).二つの境界では返される添字はオプションrightmost.closedと all.insideに依存して 1だけ異なるかもしれない.

Usage

findInterval(x, vec, rightmost.closed = FALSE, all.inside = FALSE)

Page 207: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

findInterval 207

Arguments

x 数値.

vec 数値.例えば長さ Nで非減少順にソートされている.

rightmost.closed

論理値.もし真なら最右端区間 vec[N-1] .. vec[N]は閉じているとされる,下を見よ.

all.inside 論理値.もし真なら返される添字は 1,...,N-1に変換される.つまり 0は1へそして Nは N-1へマップされる.

Details

関数 findIntervalはベクトル xの別のベクトル vec中での添字を見つける,ここで後者は非減少でなければならない.これが自明である場合 apply( outer(x, vec, ">="), 1, sum)に同値である.実際には区間アルゴリズムは計算量が O(n logN) である区間探索を行う,ここで n <- length(x) (そして N <- length(vec))である. (ほとんど)ソートされたxに対してはこれは更に早く,基本的に O(n)となる.

これは経験分布関数の計算と同じであり,実際 findInterval(t, sort(X))は nFn(t;X1, . . . , Xn)と同値である.ここで Fnは X1, . . . , Xnの経験分布関数である.

rightmost.closed = TRUEの時は,x[j] = vec[N] (= max vec)に対する結果は最後の区間中のすべての値と同様に N - 1になる.

Value

0:N (と NA)に値を取る長さ length(x) のベクトルで,ここで N <- length(vec),又はall.inside = TRUEの時そしてその時だけ 1:(N-1)に変換される(同値であるがすべてのx値は区間の内部に変換される). NAは xkら伝播し,Inf値が xと vecの双方に許される.

Author(s)

Martin Maechler

See Also

findInterval() の一般化である approx(*, method = "constant"), (因子 n を除けば)findInterval(.) と本質的に同値な経験分布関数の計算には ecdf.

Examples

x <- 2:18v <- c(5, 10, 15) # 二つのビン [5,10) と [10,15) を作るcbind(x, findInterval(x, v))

N <- 100X <- sort(round(stats::rt(N, df = 2), 2))tt <- c(-100, seq(-2, 2, len = 201), +100)it <- findInterval(tt, X)tt[it < 1 | it >= N] # 最初と最後だけが range(x) の外にある

Page 208: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

208 force

force Force Evaluation of an Argument

Description

関数引数の評価を強制する.

Usage

force(x)

Arguments

x 囲み関数の形式的引数.

Details

forceは形式的引数の評価を強制する.これはもし引数が辞書式スコープ規則により囲み環境の中で補足され,後でループや apply関数の中で明示的な付値や暗黙の付値によって変更される場合に役に立つ可能性がある.

Note

これは意味論的な甘味料である:単にシンボルを評価すれば同じことになる(例を見よ).

forceは他の予約の評価を強制しない. (呼び出しの実引数が囲み環境の形式引数にマッチされた時に作られる予約を強制することで動作する,遅延評価を実装する機構である.)

Examples

f <- function(y) function() ylf <- vector("list", 5)for (i in seq_along(lf)) lf[[i]] <- f(i)lf[[1]]() # 5 を返す

g <- function(y) { force(y); function() y }lg <- vector("list", 5)for (i in seq_along(lg)) lg[[i]] <- g(i)lg[[1]]() # 1 を返す

## これは以下と同一g <- function(y) { y; function() y }

Page 209: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

forceAndCall 209

forceAndCall Call a function with Some Arguments Forced

Description

もし関数が囲み環境である時,呼び出し前に指定された個数の先頭の引数を強制評価して関数を呼び出す.

Usage

forceAndCall(n, FUN, ...)

Arguments

n 強制評価する先頭の引数の数.

FUN 呼び出す関数.

... FUNへの引数.

Details

forceAndCall は ... 中で指定された引数を持つ関数 FUN を呼び出す.もし FUN の値がクロージャなら関数への最初の n 個の引数が関数本体の実行前に評価される (つまり,それらの遅延評価予約が強制される).もし FUN の値がプリミティブであれば呼び出しFUN(...) は通常の仕方で評価される.

forceAndCallは applyのような,適用された関数が返す結果がその引数を取得するクロージャである時に,より合理的に振る舞う高次の関数を定義することを助けることを意図している.

See Also

force, promise, closure.

Foreign Foreign Function Interface

Description

Rに読み込まれているコンパイル済みコードへの呼び出しを行う関数.

Usage

.C(.NAME, ..., NAOK = FALSE, DUP = TRUE, PACKAGE, ENCODING).Fortran(.NAME, ..., NAOK = FALSE, DUP = TRUE, PACKAGE, ENCODING)

Page 210: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

210 Foreign

Arguments

.NAME 文字列.C関数,Fortranサブルーティンの名前を与える.またはそうした名前へを参照するクラス "NativeSymbolInfo", "RegisteredNativeSymbol"もしくは "NativeSymbol"のオブジェクト.

... 外部関数へ引き渡される引数.最大65.

NAOK もし TRUEならば引数中の NA, NaNまたは Inf値は外部関数に引き渡される.もし FALSEならば, NA,NaNまたはr Inf値はエラーとされる.

PACKAGE もし与えられれば,文字列 .NAMEの検索はこの引数で与えられる DLLに限られる(加えて慣例的な拡張子 ‘.so’, ‘.dll’, . . . ).これはパッケージの安全性を与えることを意図しており,この引数を他のパッケージがそれらの外部シンボルを書き換えず,また検索の速度を向上させる(‘Note’を見よ).

DUP, ENCODING 過去への互換性のため.受け入れられるが無視される.

Details

これらの関数はコンパイルされた Cと Fortranコードへの呼び出しをするのに使うことが出来る.最近のインタフェイスは .Callと .Externalで,より柔軟で優れた性能を持つ.

これらの関数は primitiveで, .NAMEは常に与えられた最初の引数(名前を持つべきではない)にマッチする.他の名前付き引数は ... に続くので,省略できない.明快さのために, .NAMEにマッチもしくは部分的にマッチする ... に引き渡される引数中で名前を使うことを避けるべきである.

Value

引き渡される ... 引数リストと類似のリスト (引数に与えられたすべての名前を含む)だが, Cや Fortranコードによりなされる変更を反映する.

引数の型

Cまたは Fortran引数への R引数のマッピングは次のようになる

R C Fortraninteger int * integernumeric double * double precision– or – float * realcomplex Rcomplex * double complexlogical int * integercharacter char ** [以下を見よ]raw unsigned char * 許されないlist SEXP * 許されないその他 SEXP 許されない

注意: integerと logicalに対応する Cの型は Sと同様に intであり,longではない.この違いは intが32ビットで longが64ビットである(64-ビットWindowsではそうではない).ほとんどの64ビットプラットフォームで問題になる.

注意: logicalに対応する Fortranの方は integerであり logicalではない:この違いはある種の Fortranコンパイラで問題になる.

Page 211: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Foreign 211

Csingleが TRUEと設定( as.singleまたは singleを使う)されていない限り, Rの数値ベクトルは Cに double *として(Fortranでは double precisionとして)引き渡される.この機構は既存の Cと Fortranコードへのインタフェイスを容易にすることだけを意図している.

Cの型 Rcomplexは ‘Complex.h’中に typedef struct {double r; double i;}として定義されている.これは使用するコンパイラによって C99の double complex型に同値であったりなかったりする.

論理値は 0 (FALSE), 1 (TRUE)または INT_MIN = -2147483648 (NA,しかし NAOK = TRUEの時だけ)として渡される.そしてコンパイル済みコードはこれらの三つの値のいずれかを返すべきである:しかしながら INT_MIN以外の非ゼロ値は TRUEにマップされる.

欠損 (NA)文字列は .Cに文字列 "NA"として渡される.Cの char型はすべての可能なビットパターンを表現できるので,欠損文字列と文字列 "NA"を区別する方法は無いと思われる.もしこの区別が重要なら .Callを使おう.

.Fortranは文字列ベクトルの最初(だけ)の文字列を Cの文字配列として Fortranに渡す:もし真の長さが別個に引き渡されるのなら,これは character*255として使えるかもしれない.文字列の最大255の文字だけが返される. (そしてこれが動作したとしても,どのように上手く動作するかは Cと Fortranコンパイラそしてプラットフォームに依存する.)

リスト,関数,そして他の Rオブジェクトは(歴史的な理由から) .Cに引き渡されるが,.Callインタフェイスはもっと好ましい.原子的なベクトルを除くすべての入力は読み込み専用とみなすべきである.そしてベクトル(リストを含む)を除き,関数や環境は廃止されている.

Fortranのシンボル名

Rをコンパイルするのに使えることが知られているすべての Fortranコンパイラはシンボル名を小文字でマップする.従って .Fortranも同様である.

アンダースコアを含むシンボル名は Fortran77では不正である (Fortran 9xでは許される).多くの Fortran 77コンパイラはそれらを許すかもしれないが,アンダースコアを含まない名前に異なった仕方で翻訳するかもしれない.そうした名前はしばしば .Fortran (それらがどのように翻訳されるかは Rが構築される際に検出され,その情報は .Fortranにより使われる)で使えるかもしれないが,可搬的コードはアンダースコアを含む Fortran名を使うべきではない.

.Fortranをコンパイル済み Fortran 9xコードとともに使う際には注意がいる.特にサブルーチン名が小文字でなかったり,アンダースコアを含む場合, Rをコンフィギュアした際に使われた Fortran77コンパイラと Fortran 9xコンパイラが異なるかもしれない. .Cを使い必要なシンボル名の翻訳を自分自身で行うことは可能である.

引数のコピー

文字列ベクトルはコンパイル済みコードが呼び出される前にコピーされ,結果が回収される.他の原子的ベクトルに対しては,もしそれが呼び出しコード中で使われるなら,引数はコンパイル済みコードが呼び出される前にコピーされる.

非原子的ベクトルオブジェクトは Cコードに対して読み込みオンリーで決してコピーされない.

この挙動は options(CBoundsCheck = TRUE)を設定することで変更できる.その場合,バイト,論理値,整数そして複素数値ベクトル引数はコンパイル済みコードを呼び出す前と後の双方でコピーされる.最初に行われるコピーはガードバイトにより各端まで拡張される.そして帰途にはそれらが未変更かどうかチェックされる. .Cに対しては,文字列ベクトルの各要素はガードバイトを使う.

Page 212: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

212 formals

Note

もしこれらの関数の一つが頻繁に使われるのなら, PACKAGE を指定する(検索を一つのDLLに制限するために)か .NAMEをネイティブのシンボルオブジェクトとして引き渡す.シンボルの検索は,特に多くの名前空間が読み込まれている時,長時間かかることがある.

Rにリンクされているシンボルについては PACKAGE = "base"を見ることが出来る.これを自分自身のコードで行ってはならない:そうしたシンボルは APIの一部分では無く,警告なしに変更されるかもしれない.

References

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

See Also

dyn.load, .Call.

マニュアル ‘Writing R Extensions’.

formals Access to and Manipulation of the Formal Arguments

Description

関数の形式的引数を得る,設定する.

Usage

formals(fun = sys.function(sys.parent()))formals(fun, envir = environment(fun)) <- value

Arguments

fun 関数オブジェク,又は‘詳細’を見よ.

envir 関数が定義されるべき環境.

value R表現式のリスト(又は対リスト).

Details

最初の形式では fun はまた操作される関数の名前である文字列でもよく,それは親環境から探される.もしそれが特定できなければ formalsを呼び出している関数が使われる.

クロージャだけが形式的引数を持ち,プリミティブな関数は持たない.

Value

formalsは指定された関数の形式的引数のリストを返す.もしくは非関数やプリミティブな関数に対しては NULLを返す.

置き換え形式は関数の形式的引数のセットを右側のリスト/対リストに変更し,そして(可能性として)関数の環境をリセットする.

Page 213: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

format 213

See Also

人間が読みやすいバージョンは args, alist, body, function.

Examples

require(stats); require(graphics)length(formals(lm)) # 形式的引数の数names(formals(boxplot)) # 形式的引数の名前

f <- function(x) a+bformals(f) <- alist(a = , b = 3) # 関数(a, b = 3) a+bf(2) # 結果 = 5

format Encode in a Common Format

Description

Rオブジェクトを見栄えの良いプリントのために整形する.

Usage

format(x, ...)

## Default S3 method:format(x, trim = FALSE, digits = NULL, nsmall = 0L,

justify = c("left", "right", "centre", "none"),width = NULL, na.encode = TRUE, scientific = NA,big.mark = "", big.interval = 3L,small.mark = "", small.interval = 5L,decimal.mark = getOption("OutDec"),zero.print = NULL, drop0trailing = FALSE, ...)

## S3 method for class 'data.frame'format(x, ..., justify = "none")

## S3 method for class 'factor'format(x, ...)

## S3 method for class 'AsIs'format(x, width = 12, ...)

Arguments

x 任意の Rオブジェクト(概念的に);典型的には数値.

trim 論理値;もし FALSEなら論理値,数値そして複素数値は同じ幅になるように右揃えされる:もし TRUEなら揃えるための先頭の空白は抑制される.

digits 数値と複素数値 xのためにどれだけの有効桁数を使うか.既定の NULLは getOption("digits") を使う.これは提案である;十分な10進桁数が(大きさで)最小の数値がこの有効桁数を持ちそしてまた nsmallを満たすように使われる. (複素数値に対する解釈は signifを見よ.)

Page 214: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

214 format

nsmall 科学的記法でない書式で実数/複素数を整形する際に小数点の右側に置かれる数字の最小数.許される値は 0 <= nsmall <= 20.

justify 文字列ベクトルは左揃え(既定),右揃い,中央化又はそのままにするかを指示する.短縮出来る.

width defaultメソッド:最小の欄幅か,制限無しには NULLか 0.

AsIsメソッド:非文字列オブジェクトに対する最大の欄幅. NULLは既定の 12に対応する.

na.encode 論理値:NA文字列をエンコードするか?これは文字列ベクトルにだけ適用され,数値,複素数値には適用され無いことを注意しよう.論理NAにも適用されず,これは常に "NA"とエンコードされる.

scientific 数値や複素数値ベクトルの要素を科学的表記にエンコードすべきかどうかを指定する論理値.もしくは整数値ペナルティ(options("scipen")を見よ).欠損値は現在の既定のペナルティに対応する.

... 他のメソッドから・へ渡される追加引数.big.mark, big.interval, small.mark

(長めの)数値と複素数値系列を見やすくするために使われる.prettyNumに渡される:そのヘルプ頁が詳細を説明する.

small.interval, decimal.mark, zero.print, drop0trailing

同上.

Details

formatは総称的な関数である.ここで解説されるメソッドの他に日付(format.Dateを見よ),日付-時刻(format.POSIXctを見よ),そして format.octmodeや format.distに対するメソッドがある.

format.data.frameは formatの適当なメソッドを各列に適用しデータフレームを列ごとに整形する.列に対するメソッドはしばしば as.characterに類似するがより多くのコントロールを提供する.行列とデータフレームは結果中の別個の列に変換され,文字列の列は(普通すべて)クラス "AsIs"を与えられる.

format.factorは因子を文字列ベクトルに変換し,それから既定メソッドを呼び出す(従って justifyが適用される).

format.AsIs はデータフレームから取り出された複雑なオブジェクトの列を処理する.文字列オブジェクトは既定メソッドに渡される(従って widthは適用されない).さもなければそれはオブジェクトを文字列に変換するために toStringを呼び出し(ベクトル化リストなら要素毎に)そしてそれから結果を右端でジャスティファイする.

文字列ベクトルに対する左右揃え(そしてそれらのメソッドで文字列に変換されたもの)はディスプレイ幅に関してなされ(nchar を見よ),倍長文字や特殊文字の翻訳(エスケープ列として,バックスラッシュのエスケープかを含むが二重引用化は含まない:print.default を見よ)を考慮する.従って幅は print(quote = FALSE) による表示であり, catによる表示ではない.文字列は最も幅広の幅を表示するため空白で埋められる.(もし na.encode = FALSEなら,欠損文字列は幅の計算に含められず,エンコードされない.)

数値ベクトルは少なくとも digitsの有効桁数ですべての要素を表示するのに必要な最小の10進桁数でエンコードされる.しかしながら,もしそうするとすべての要素が末尾にゼロを持つならば, 10進桁数は nsmallに届くか少なくともひとつの要素がゼロでない最終桁を持つまで縮小される;また上の big.*, small.*等の引数に対するドキュメントを見よ. digits >= 16に関する print.default中の注意を見よ.

バイトベクトルは as.characterによりそれらの2桁の16進数表現に変換される.

内部コードは‘小数点’に対するオプション getOption("OutDec") を尊重するので,もしこれが "."以外の何かに設定されていれば引数 decimal.markより優先される.

Page 215: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

format 215

Value

xに類似の構造のオブジェクトで,xの最初の引数の要素の共通の書式で現在のエンコーディングによる文字列表現を含む.

文字列,数値,複素数値又は因子の x に対しては,行列/配列については次元と次元名が,ベクトルについては名前が保存される:他の属性はコピーされない.

もし x がリストならば,結果はリストの各要素に format.default(x, ...) を適用して (それ自体リストである要素は unlist してから),それから各要素に対する結果を折りたたんでために paste(collapse = ", ") を使って得られる文字列ベクトルである.普通折りたたんだ文字列の整列は要求されないので,この場合の既定動作はtrim = TRUE, justify = "none"である.

References

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

See Also

format.infoは原子的ベクトルをどのように整形するかを指示する.

formatC, paste, as.character, sprintf, print, prettyNum, toString, encodeString.

Examples

format(1:10)format(1:10, trim = TRUE)

zz <- data.frame("(row names)"= c("aaaaa", "b"), check.names = FALSE)format(zz)format(zz, justify = "left")

## nsmall の使用format(13.7)format(13.7, nsmall = 3)format(c(6.0, 13.1), digits = 2)format(c(6.0, 13.1), digits = 2, nsmall = 1)

## 科学的記法の使用format(2^31-1)format(2^31-1, scientific = TRUE)

## リストz <- list(a = letters[1:3], b = (-pi+0i)^((-2:2)/2), c = c(1,10,100,1000),

d = c("a", "longer", "character", "string"),q = quote( a + b ), e = expression(1+x))

## "2" つの小さな違いが分かるだろうか?(f1 <- format(z, digits = 2))(f2 <- format(z, digits = 2, justify = "left", trim = FALSE))f1 == f2 ## 2 FALSE, 4 TRUE

Page 216: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

216 format.info

format.info format(.) Information

Description

format(x, digits, nsmall)がどのように整形されるかに関する情報が返される.

Usage

format.info(x, digits = NULL, nsmall = 0)

Arguments

x 原子的ベクトル;format(x, ...) の可能性のある引数.

digits 数値と複素数値の xに対してどれだけの有効桁数を使うか既定値 NULLは getOption("digits")を使う.

nsmall (format(..., nsmall)を見よ).

Value

長さ 1,3又は 6の整数ベクトル,例えば rとする.

論理値,整数そして文字列ベクトルに対しては単一の要素で, width = NULL ならばformatで使われる幅.

数値ベクトルに対しては:

r[1] format(x)が使う幅(文字単位).

r[2] 小数点以下の桁数.

r[3] 0:2中;もし ≥1なら指数表記が使われ,指数部は長さ r[3]+1.

複素数値ベクトルに対しては最初の三つの要素は実部を参照し,虚部に対応する追加の三つの要素がある.

See Also

format (特に digits >= 16について), formatC.

Examples

dd <- options("digits") ; options(digits = 7) #-- 以下のためにformat.info(123) # 3 0 0format.info(pi) # 8 6 0format.info(1e8) # 5 0 1 - 指数表記 "1e+08"format.info(1e222) # 6 0 2 - 指数表記 "1e+222"

x <- pi*10^c(-10,-2,0:2,8,20)names(x) <- formatC(x, width = 1, digits = 3, format = "g")cbind(sapply(x, format))t(sapply(x, format.info))

## "." の右に少なくとも8桁t(sapply(x, format.info, nsmall = 8))

Page 217: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

format.pval 217

# 古いオプションをリセット:options(dd)

format.pval Format P Values

Description

format.pvalはp値の整形用である.

Usage

format.pval(pv, digits = max(1, getOption("digits") - 2),eps = .Machine$double.eps, na.form = "NA", ...)

Arguments

pv 数値ベクトル.

digits 有効桁数をどれだけ使うか.

eps 数値的許容度:‘詳細’を見よ.

na.form NAの文字列表現.

... nsmallのような formatへ渡される追加引数.

Details

format.pvalは主に print.summary.lm等のための補助関数であり,固定・浮動小数点数と非常に小さな値に対し個別に整形を行う; epsより小さな数は "< [eps]"のように整形される (ここで ‘[eps]’は format(eps, digits)を表す).

Value

文字列ベクトル.

Examples

format.pval(c(stats::runif(5), pi^-100, NA))format.pval(c(0.1, 0.0001, 1e-27))

Page 218: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

218 formatC

formatC Formatting Using C-style Formats

Description

数値を個別にそして柔軟に整形する.formatC()は C風の書式指定を持つ.

prettyNum()は数値を“見栄え良くする”(可能性として整形を行い)のに使われる.そしてまた format.default中でも使われる.

.format.zeros()は prettyNum()の補助関数で整形された数のベクトル x中のゼロを再整形する.

Usage

formatC(x, digits = NULL, width = NULL,format = NULL, flag = "", mode = NULL,big.mark = "", big.interval = 3L,small.mark = "", small.interval = 5L,decimal.mark = getOption("OutDec"),preserve.width = "individual", zero.print = NULL,drop0trailing = FALSE)

prettyNum(x, big.mark = "", big.interval = 3L,small.mark = "", small.interval = 5L,decimal.mark = getOption("OutDec"), input.d.mark = decimal.mark,preserve.width = c("common", "individual", "none"),zero.print = NULL, drop0trailing = FALSE, is.cmplx = NA,...)

.format.zeros(x, zero.print, nx = suppressWarnings(as.numeric(x)))

Arguments

x 原子的な数値又は文字列オブジェクトで,prettyNum()に対してだけはもしかすると複素数で,典型的には実数ベクトル.任意のクラスは警告付きで捨てられる.

digits 要求される小数点以降の桁数 (format = "f")又は有効桁数 (format = "g",= "e"又は = "fg").既定値: 整数には 2,実数には 4.もし 0より小さければ Cの既定値である 6桁が使われる.もし50以上であれば, format = "f"でない限り50が警告と共に使われるが典型的には 324が限界である.(15–21桁以上は正確とは限らず,使われる OSとコンパイラーに依存する.この限界は単に基礎にある Cの実行時のセグメンテーション違反に対する用心である.)

width 全欄幅;もし digits も width も共に未指定なら, width の既定値は1,さもなければ digits + 1.width = 0 は width = digits を使い,width < 0 はこの欄での左ジャスティフィケーション数を意味する(flag = "-"と同値).もし必要なら結果は width以上の文字を持つ.文字列データに対してはこれは文字列単位と解釈される(バイト単位でもなくディスプレイ幅でもない).

Page 219: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

formatC 219

format "d" (整数に対し), "f", "e", "E", "g", "G", "fg" (実数に対し), 又は "s"(文字列に対し)に等しい.既定値は整数に対し "d" で実数に対しては"g".

"f"は通常の xxx.xxx書式中の数を与える;"e"と "E"は n.ddde+nn又は n.dddE+nn (科学的表記)を与える;"g"と "G"はそうすることでスペースが節約できる時だけ x[i]に科学的表記を用いる.

"fg"は "f"のような固定書式を使うが,digitsは有効桁数の最小値である.これは非常に長い結果の文字列をもたらす可能性がある,下の例を見よ. signifとは異なり digitsよりも多い有効桁数で大きな数をプリントする.この書式では flagが "#"を含まない限り末尾のゼロは捨て去られる.

flag formatCに対して, Kernighan and Ritchie (1988, page 243)に於けるような書式の修正を与える文字列. "0"は先頭をゼロで埋め,"-"は左揃えを行い,他に "+", " "そして "#"がある.これらが任意の順序で複数あっても良い.

mode "double" (又は "real"), "integer"又は "character".既定値: xの保管モードから決定される.

big.mark 文字;もし空でなければ小数点の前(従って big)のすべての big.interval桁毎にマークとして使われる.

big.interval 上の big.markを見よ;既定値は 3.

small.mark 文字;空でなければ小数点の後(従って small)のすべての small.interval桁毎にマークとして使われる.

small.interval 上の small.markを見よ;既定値は 5.

decimal.mark 数値的な小数点を指定するのに使われる文字.

input.d.mark もし xが characterならば, x中で小数点として使われ続けていることが知られている文字.

preserve.width マーク(big.markや small.mark)が加えられたケースで可能な限り文字幅を保つかどうかを指示する文字列.既定値の "common"は format風の挙動である一方, "individual"は formatC()中の既定値.値は簡略化出来る.

zero.print 論理値,文字列又は NULLでゼロを特別に整形するか,またどのように整形するかを指示する. ‘疎な’オブジェクトを見栄え良くプリントするのに役に立つ.

drop0trailing 論理値で,末尾のゼロ,つまり小数点マークの後の "0",を取り除くべきかどうかを指示する;また指数表記中の "e+00"を除く.

is.cmplx オプションの論理値で,xが "character"の時それが複素数ベクトル由来かどうかを指示する.既定(NA)では,xは複素数らしくなる.

... formatに渡される引数.

nx xと同じ長さの数値ベクトルで,典型的には文字列ベクトル xが予め整形されている数.

Details

formatの設定は mode設定を上書きする.従って次は 123を与える,

formatC(123.45, mode = "double", format = "d").

科学的表記の翻訳はプラットフォーム依存である:ある種のシステムは n.ddde+nnの代わりに n.ddde+nnnや n.dddennを使う.

Page 220: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

220 formatC

formatCは必ずしも小数点で数を整列しないので次は c("6.1", " 13")を与える,

formatC(c(6.11, 13.1), digits = 2, format = "fg").もし幾つかの数を共通に整形したければ formatを使う.

prettyNumは xを見栄え良く整形するためのユーティリティーである.ここで xは複素数(又は format(<complex>)でも良い.もし xが文字列でなければ,format(x[i], ...)が各要素に適用され,そしてそれからもし他の引数が既定通りであればそのままにして置かれる. xがピリオドを小数点に持つ format(<number>)のようなものの結果ではない文字列ベクトルの時は,prettyNum(x)に対して input.d.mark引数を使う.

big.markと small.markを挿入するために gsubが使われるので,特殊文字はエスケープ化する必要がある.特に単一のバックスラッシュを挿入するには "\\\\"を使う.

Rの数値ベクトルとして使われる Cの倍精度実数は符号付きゼロを持つ. formatCはこれを -0, -0.000 . . .のように出力するかもしれない.

もし big.markと decimal.markが同じならば警告が出る:これは出力を読むものに混乱をもたらすであろう.

Value

xと同じサイズと属性の文字列オブジェクト (任意のクラスを捨て去った後)で現在のロケールでエンコードされている.

format とは異なり,各数値は個別に整形される. x の各要素に渡りループし C 関数sprintf(...) が数値入力に対し呼び出される (C関数 str_signifの内部で).

formatC:文字列 xに対して単純に(左もしくは右に)空白で埋める.

Note

R 3.0.2以前ではこれは xのクラスを返り値にコピーしたため,不正なオブジェクトを簡単に作りかねなかった.

formatC()中の decimal.markの既定値は R 3.2.0で変更された:パッケージ中の printメソッドの内部で以前のバージョンのと共に使うためには decimal.mark = getOption("OutDec")を明示的に使う.

Author(s)

formatCは最初 Bill Dunlapにより S-PLUSのために書かれ,後で Martin Maechlerによりより改良された.

これは最初に Friedrich Leischにより Rに導入され,以来 R Core teamにより改良された.

References

Kernighan, B. W. and Ritchie, D. M. (1988) The C Programming Language. Second edition. Pren-tice Hall.

See Also

format.

より一般的な C風整形には sprintf.

Page 221: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

formatC 221

Examples

xx <- pi * 10^(-5:4)cbind(format(xx, digits = 4), formatC(xx))cbind(formatC(xx, width = 9, flag = "-"))cbind(formatC(xx, digits = 5, width = 8, format = "f", flag = "0"))cbind(format(xx, digits = 4), formatC(xx, digits = 4, format = "fg"))

formatC( c("a", "Abc", "no way"), width = -7) # <=> flag = "-"formatC(c((-1:1)/0,c(1,100)*pi), width = 8, digits = 1)

## 結果の幾つかは多倍長算術の実装に依存する,これはプラットフォーム固有であるxx <- c(1e-12,-3.98765e-10,1.45645e-69,1e-70,pi*1e37,3.44e4)## 1 2 3 4 5 6formatC(xx)formatC(xx, format = "fg") # 特別な "固定" 書式.formatC(xx[1:4], format = "f", digits = 75) #>> 更に長い文字列

formatC(c(3.24, 2.3e-6), format = "f", digits = 11, drop0trailing = TRUE)

r <- c("76491283764.97430", "29.12345678901", "-7.1234", "-100.1","1123")## アメリカ:prettyNum(r, big.mark = ",")## ヨーロッパの幾つかの国:prettyNum(r, big.mark = "'", decimal.mark = ",")

(dd <- sapply(1:10, function(i) paste((9:0)[1:i], collapse = "")))prettyNum(dd, big.mark = "'")

## 'small.mark' の例pN <- stats::pnorm(1:7, lower.tail = FALSE)cbind(format (pN, small.mark = " ", digits = 15))cbind(formatC(pN, small.mark = " ", digits = 17, format = "f"))

cbind(ff <- format(1.2345 + 10^(0:5), width = 11, big.mark = "'"))## すべてが同じ幅(指定最小値より一つ多い)

## 共通の幅へ個別に整形:fc <- formatC(1.234 + 10^(0:8), format = "fg", width = 11, big.mark = "'")cbind(fc)## 2の巾乗,正確に保管され,個別に整形:pow.2 <- formatC(2^-(1:32), digits = 24, width = 1, format = "fg")## 見栄え良くプリント(最後の行は 5^32 を正確に表現):noquote(cbind(pow.2))

## 複素数:r <- 10.0000001; rv <- (r/10)^(1:10)(zv <- (rv + 1i*rv))op <- options(digits = 7) ## (system default)(pnv <- prettyNum(zv))stopifnot(pnv == "1+1i", pnv == format(zv),

pnv == prettyNum(zv, drop0trailing = TRUE))## より多くの桁数は様子が変わる:options(digits = 8)head(fv <- format(zv), 3)prettyNum(fv)prettyNum(fv, drop0trailing = TRUE) # 少し見栄えが良い

Page 222: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

222 formatDL

options(op)

formatDL Format Description Lists

Description

項目のベクトルとそれらの記述を2列の表や LaTeX風の記述リストに整形する.

Usage

formatDL(x, y, style = c("table", "list"),width = 0.9 * getOption("width"), indent = NULL)

Arguments

x 記述されるべき項目を与えるベクトル,長さ2のリスト,又は2列の行列で項目と記述の双方を与える.

y xと同じ長さのベクトルで対応する記述を持つ. xが既に記述を持っていない時だけ使われる.

style 記述情報の翻訳スタイルを指定する文字列.簡略出来る.もし "table"なら,項目と記述を列に持つ2列の表が作られる(Texinfo の @table 環境に似る).もし "list"なら LaTeX風のタグ付き記述リストが得られる.

width 出力中で行をラップするための目標列を与える正整数.

indent 表スタイル中の第二列のインデント量と,リストスタイルで連続業のインデント量を指定する正整数. width/2以上であってはならず,表スタイルの既定値は width/3で,リストスタイルでは width/9.

Details

引数から項目のベクトルと対応する記述を抜き出した後,双方が文字列ベクトルに変換される.

表スタイルでは indent - 3文字以上の項目はそれ自体一行で表示される.

Value

整形された項目を持つ文字列ベクトル.

Examples

## R が稼働している計算機に関する数値的特性のわかりやすい要約を提供するwriteLines(formatDL(unlist(.Machine)))## "list" スタイルの Sys.getenv() の結果を吟味## (既定ではこれらは "table" スタイルでプリントされる):writeLines(formatDL(Sys.getenv(), style = "list"))

Page 223: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

function 223

function Function Definition

Description

これらは R言語で新しい関数を定義するための基本的機構を提供する.

Usage

function( arglist ) exprreturn(value)

Arguments

arglist 空又は一つもしくはそれ以上の名前か name=expressionの形の項.

expr 表現式.

value 表現式.

Details

引数リスト中の名前はバックコート文字で引用化された非標準的な名前でも良い (‘back-quote’を見よ).

もし valueが欠損していれば NULLが返される.もしそれが単一の表現式なら,評価された表現式の値が返される. (表現式は return が呼び出されるや否や,そして任意のon.exit表現式が評価される前に,関数の評価フレーム中で評価される.)

もし関数が returnを呼び出す前に終わりに達すると,最後に評価された表現式の値が返される.

技術的詳細

このタイプの関数は Rでは唯一のタイプではない:それらはプリミティブな関数と比較するためクロージャ (LISPに起源を持つ用語)と呼ばれる.

一つのクロージャは三つの成分を持つ,その形式的引数 (引数のリスト),その本体(‘用法’節の expr)そしてクロージャが使われる際の評価フレームの囲み環境であるその環境である.

もしクロージャがバイトコンパイルされている時はもうひとつのオプション成分がある.これは通常ユーザには可視的でないが,関数がプリントされるときは指示される.

References

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

See Also

args.

関数の構成部分にアクセスするには formals, bodyそして environment.

デバッギングには debug;不可視の返り値には return(.) 内部で invisibleを使う.

Page 224: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

224 funprog

Examples

norm <- function(x) sqrt(x%*%x)norm(1:4)

## 匿名関数:(function(x, y){ z <- x^2 + y^2; x+y+z })(0:7, 1)

funprog Common Higher-Order Functions in Functional Programming Lan-guages

Description

Reduceは二項関数を使い,可能性として初期値を与えて与えられたベクトルの要素を次々に組み合わせる. Filterは真偽(論理値)関数が真であるようなベクトルの要素を抜き出す. Findと Positionはベクトル中のそうした要素のそれぞれ最初か最後の要素とその位置を与える.Mapは与えられたベクトルの対応する要素に関数を適用する. Negateは与えられた関数の否定を作り出す.

Usage

Reduce(f, x, init, right = FALSE, accumulate = FALSE)Filter(f, x)Find(f, x, right = FALSE, nomatch = NULL)Map(f, ...)Negate(f)Position(f, x, right = FALSE, nomatch = NA_integer_)

Arguments

f 複数の引数を持つ関数 (Reduceには2項,Filter, Findそして Positionには単項,もし k 個の引数で呼び出されたならば Map には k 項).Negateには任意の真偽関数.

x ベクトル.

init xの要素と同じ種類の Rオブジェクト.

right 左から右へ(既定)か右から左hw進むかを指示する論理値.

accumulate 引き続く縮小組み合わせを蓄積するかどうかを指示する論理値.既定では最後の組み合わせだけが使われる.

nomatch マッチするもの(真偽条件を満たす)が無いときに返される値.

... ベクトル.

Details

もし init が与えられると Reduce は論理的にそれをそれぞれ x の最初(左から右へ進む時)又は最後に付け加える.もしこの可能性として増補されたベクトル v が n > 1個の要素を持てば, Reduceは f を v の要素にそれぞれ左から右又は右から左へ次々と適用する.つまり左縮約は l1 = f(v1, v2), l2 = f(l1, v3)等を計算し ln−1 = f(ln−2, vn)を返す.右縮約は rn−1 = f(vn−1, vn), rn−2 = f(vn−2, rn−1)とし r1 = f(v1, r2)を返す.(つまり,もし v が系列 (2, 3, 4)で f が除算なら,左と右の縮約は (2/3)/4 = 1/6と 2/(3/4) = 8/3

Page 225: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

funprog 225

をそれぞれ返す.)もし vがただ一つ要素を持てばそれが返される;もし要素が皆無ならNULLが返される.このように, fは常に二つの引数で呼び出されることが保証される.

現在の実装は安定性とスケーラビリティを保証するため非再帰的である.

Reduceは Common Lispの reduceを真似ている.縮約はまた折込み(例えば Haskellで)や蓄積 (例えば C++ Standard Template Library中)としても知られている.蓄積バージョンはHaskellの scan関数に対応する.

Filterは単項真偽関数 fを xの各要素に適用する.必要なら論理値に変換し,これが真を返す xの部分集合を返す.存在するかもしれない NA値は現在常に偽とされることを注意しよう; NAに対する制御は将来付け加えられるかもしれない. Filterは Haskellのfilterや Common Lispの remove-if-notに対応する.

Findと Positionはそれぞれ Common Lispの find-ifと position-ifに対応する.もし真偽関数が真となる要素があれば,そうした要素の最初か最後の要素かその位置が,rightが偽(既定)か真に応じてそれぞれ返される.もしそうした要素が皆無なら nomatchで指示された値が返される.現在の実装はパフォーマンスに対して最適化されていない.

Map は mapply の単純なラッパであり結果の単純化を試みない.Common Lisp の mapcarに似る (しかしながら引数がリサイクルされる).将来のバージョンは結果の型の制御を許すかもしれない.

Negateは Common Lispの complementに相当する. (真偽)関数 fをあたえた時,これは fが返すものの論理的否定を返す.

See Also

パッケージ parallel中の関数 clusterMapと mcmapply (Windowsでは無い)は Mapの並列版を提供する.

Examples

## 一般化加算器:add <- function(x) Reduce("+", x)add(list(1, 2, 3))## sum() に似るが各縮小ステップで適当な '+' メソッドを使うので行列等にも使える.## より一般的に,任意個数の引数に作用する多くの総称的関数が定義できる:FOO <- function(...) Reduce(FOO2, list(...))FOO2 <- function(x, y) UseMethod("FOO2")## FOO() メソッドはそうすると FOO2() メソッド経由で提供できる.

## 一般的な累積加算器:cadd <- function(x) Reduce("+", x, accumulate = TRUE)cadd(seq_len(7))

## 連分数を計算する簡単な関数:cfrac <- function(x) Reduce(function(u, v) u + 1 / v, x, right = TRUE)## pi の連分数近似:cfrac(c(3, 7, 15, 1, 292))## オイラー数 (e) の連分数近似:cfrac(c(2, 1, 2, 1, 1, 4, 1, 1, 6, 1, 1, 8))

## 関数の繰り返し適用:Funcall <- function(f, ...) f(...)## log(exp(acos(cos(0)) を計算するReduce(Funcall, list(log, exp, acos, cos), 0, right = TRUE)## 関数の n 重繰り返し,汎関数スタイル:

Page 226: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

226 gc

Iterate <- function(f, n = 1)function(x) Reduce(Funcall, rep.int(list(f), n), x, right = TRUE)

## 黄金比の連分数禁じ:Iterate(function(x) 1 + 1 / x, 30)(1)## これは次と同じcfrac(rep.int(1, 31))## x の平方根を初期値を与えた関数 t |-> (t + x / t) / 2 の不動点として計算:asqrt <- function(x, n) Iterate(function(t) (t + x / t) / 2, n)asqrt(2, 30)(10) # 正値ら出発 => +sqrt(2)asqrt(2, 30)(-1) # 負値から出発 => -sqrt(2)

## 基本環境中のすべての関数を列挙:funs <- Filter(is.function, sapply(ls(baseenv()), get, baseenv()))## 10 以上の引数を持つ基本環境中の関数:names(Filter(function(f) length(formals(args(f))) > 10, funs))## 基本環境中の引数 '...' を持つ関数の数:length(Filter(function(f)

any(names(formals(args(f))) %in% "..."),funs))

## 基本環境中の関数でないすべてのオブジェクトを列挙:Filter(Negate(is.function), sapply(ls(baseenv()), get, baseenv()))

gc Garbage Collection

Description

gcの呼び出しはガベージコレクションを惹き起こす. gcinfoは自動的なガベージコレクションが無言で行われる (verbose = FALSE)か,又はメモリ使用量の統計をプリントするか(verbose = TRUE)を指定するフラグを設定する.

Usage

gc(verbose = getOption("verbose"), reset = FALSE)gcinfo(verbose)

Arguments

verbose 論理値;もし TRUEならガベージコレクションは cons cellとベクトルに割り当てられたスペースについての統計をプリントする.

reset 論理値:もし TRUEなら使用される最大スペースは現在の値にリセットされる.

Details

gcの呼び出しはガベージコレクションを惹き起こす.これはまたユーザの関与なしに自動的に起こり,そして gcを呼び出す主要な目的はメモリ使用のレポートである.

しかしながら大きなオブジェクトが消去された後に gcを呼び出すのは, RにメモリをOSに返すことを促すので,有用になり得る.

Rはベクトルのためのスペースを 8バイトの倍数で確保する:従って "Vcells"も同様になる.これは初期のメモリ確保機構の名残である (ベクトルヒープを使っていた).

Page 227: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

gc.time 227

gcinfo(TRUE)が実施されると各ガベージコレクション毎にメッセージコネクションに次のような形式のメッセージが送られる

Garbage collection 12 = 10+0+2 (level 0) ...6.4 Mbytes of cons cells used (58%)2.0 Mbytes of vectors used (32%)

ここで最後の二行は現在のメモリ使用量を 0.1Mb単位で丸めたものと現在のトリガー値のパーセントで表したものである.最初の行は様々なレベルでのガベージコレクションの回数のブレークダウンを与える(説明についてはマニュアル ‘R Internals’を見よ).

Value

gcは行が "Ncells" (cons cells),通常32ビットシステムでは各々 28バイトで64ビットシステムでは 56 バイト,そして "Vcells" (ベクトルセル,各々 8 バイト),そして列が"used"と "gc trigger"で,各々がメガバイト単位(次の 0.1Mbに切り上げられる),の行列を返す.

もし "Ncells"か "Vcells"に最大値が設定されていれば, Mbで与えた現在の上限をプリントしている(限界がなければ NA).

最後の二つの列は gc(reset = TRUE) (または Rの起動以来)の最後の呼び出し以来の使用最大スペースを示す.

gcinfoは前のフラグの値を返す.

See Also

マニュアル ‘R Internals’.

Rのメモリ管理は Memory,そしてもしあなたが Rの開発者なら gctorture.

ガベージコレクション時に起こる行動については reg.finalizer.

Examples

gc() #- 今実行gcinfo(TRUE) #-- 将来,いつRがそれを実行するかを示すx <- integer(100000); for(i in 1:18) x <- c(x, i)gcinfo(verbose = FALSE) #-- 二度とそれを見せない

gc(TRUE)

gc(reset = TRUE)

gc.time Report Time Spent in Garbage Collection

Description

この関数は GCの時間計測が有効になっている間,これまでの Rセッションでガベージコレクションに費やされた時間を報告する.

Usage

gc.time(on = TRUE)

Page 228: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

228 gctorture

Arguments

on 論理値;もし TRUEなら GC時間計測が有効になる.

Details

タイマーの解像度のせいでこれは控えめになる可能性がある.

これはプリミティブな関数である.

Value

長さ 5の数値ベクトルで GC時間計測が有効になっている間にガベージコレクションを行うことで費やされたユーザの CPU時間,システムの CPU時間,経過時間,そして子プロセスのユーザとシステム CPU時間 (普通共にゼロ)を与える.

子プロセスの時間はWindowsでは与えられず,常に NAになる.

See Also

gc,セッションに対する時間計測は proc.time.

Examples

gc.time()

gctorture Torture Garbage Collector

Description

ガベージコレクションを(ほとんど)すべてのメモリ割り当て毎に起動する.メモリ保護のバグを探しだすことを意図している.不幸なことに,同時に Rの実行が非常に遅くなる.

Usage

gctorture(on = TRUE)gctorture2(step, wait = step, inhibit_release = FALSE)

Arguments

on 論理値;それをオン/オフにする.

step 整数;GCをメモリ割り当て step毎に実行する; step = 0は GC tortureをオフにする.

wait 整数;GC tortureを開始するまでに待つべきメモリ割り当ての数.inhibit_release

論理値;再利用のためにフリーなオブジェクトを開放しない:注意して使うこと.

Page 229: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

get 229

Details

gctorture(TRUE)の呼び出しはメモリ管理器にすべてのメモリ割り当てのたびに完全なGCを矯正するように指示する. gctorture2はより改良されたインタフェイスを与え,GC tortureの開始を遅らせたり,またメモリ割り当て step毎に GCを実行するオプションを提供する.

gctorture2 の三つ目の引数は R が strict write barrier を有効にしてコンフィギュアされている時だけ使われる.この場合すべてのガベージコレクションは完全回収で,メモリ管理器はフリーノードをマークし,フリーノードが使われた時エラー信号が出る多くの状況でチェックを可能にする.これは C コード中の保護されていない値を特定するのに非常に役立つ.ノードが自由になり再割り当てされるケースは検出されない.inhibit_release引数はそうした再割り当てを禁止することに使うことが出来る.これは使用メモリの増加を招き,注意深くそしてプロセスメモリ使用量を監視し制限する OSの機能との関連で使うべきである.

gctorture2 はまた R セッションの開始時に環境変数経由で起動できる.R_GCTORTUREは step引数に,R_GCTORTURE_WAITは waitに,そして R_GCTORTURE_INHIBIT_RELEASEはinhibit_releaseに対応する.

Value

最初の引数の前の値.

Author(s)

Peter Dalgaard and Luke Tierney

get Return the Value of a Named Object

Description

オブジェクトを名前で探す(get),又はゼロもしくはそれ以上のオブジェクトを探す(mget).

Usage

get(x, pos = -1, envir = as.environment(pos), mode = "any",inherits = TRUE)

mget(x, envir = as.environment(-1), mode = "any", ifnotfound,inherits = FALSE)

dynGet(x, ifnotfound = , minframe = 1L, inherits = FALSE)

Arguments

x getに対してはオブジェクト名(文字列として与えられる).mgetに対してはオブジェクト名の文字列ベクトル.

pos, envir オブジェクトをどこで探すか(‘詳細’を見よ);もし省略されるとオブジェクト名が引用化されずに表現式中に登場されたかのように探索する.

Page 230: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

230 get

mode 探されるオブジェクトのモードと型:‘詳細’節を見よ.

inherits 環境の囲みフレームが探されるべきか?

ifnotfound mget に対しては項目が見つからなかったら list の値として使われる値:必要ならリストに変換される.dynGetに対しては任意の Rオブジェクト,つまり stop()への呼び出し.

minframe 探される最小のフレーム番号を指定する整数.

Details

pos引数はオブジェクトを探す環境を何通りもの仕方で指定できる:正の整数(searchリストの位置);検索リスト中の要素名の文字列として;又は現在アクティブな関数呼び出しにアクセスする環境(sys.frameの使用を含む).既定値は -1で getへの呼び出しの現在の環境. envir引数は環境を指定する別の方法である.

これらの関数は名前 xの各々が指定環境でそれに結びついた値を持つかどうかを検索する.もし inheritsが TRUEで xに対する値が見つからないと,環境の囲みフレームが名前 xが見つかるまで探索される.環境とそれらの囲み環境に関する詳細は environmentとマニュアル ‘R Language Definition’を見よ.

もし mode が指定されるとその型のオブジェクトだけが探される.ここで mode とは意味 typeof と mode を合わせたものである:"function" はプリミティブ関数と演算子,"numeric", "integer" そして "double" 全ては任意の数値型をカバーする."symbol" と"name"は同値であるが,しかし "language"が使われなければならない(そして "call"や"("ではない).

mget に対しては mode と ifnotfound の値は x と同じ長さか,長さ1でも良い.引数ifnotfoundは要求された項目が見つからなかった時に使う値か,項目が見つからなかった時に呼び出される引数が一つの関数(要求されている項目の名前を引数に持つ)のどちらかのリストである.

dynGet()は少々実験的で他の関数中で使われる.これはオブジェクトを呼び出し環境,つまり関数の sys.frame(),中で探す.注意して使おう.

Value

getに対しては見つかったオブジェクト.もしオブジェクトが見つからなければエラーになる.

mgetに対してはオブジェクトの名前付きリスト (見つかったものか ifnotfoundで指定されたもの).

Note

a <- get(nam)の逆操作は assign(nam, a)で aに名前 namを与える.

inherits = TRUEは Rでは既定値であるが,Sでは異なった意味を持ち既定値ではない.

References

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

Page 231: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

getDLLRegisteredRoutines 231

See Also

オブジェクトが存在するかどうかのチェックには exists;オブジェクトの存在をチェックし同時にオブジェクトを得る効率的な方法は get0.

get()の逆である assign,上を見よ.

オブジェクトを他の名前空間を含むどこにあるかにかかわらず探すには getAnywhere,そしてオブジェクトを特定の名前空間で探すには getFromNamespace.

Examples

get("%o%")

## mget のテストe1 <- new.env()mget(letters, e1, ifnotfound = as.list(LETTERS))

getDLLRegisteredRoutines

Reflectance Information for C/Fortran routines in a DLL

Description

この関数は Rに登録された DLL中のルーチンの集合の問い合わせを可能にし,動的な検索,ネイティブルーチンを呼び出す際のエラー処理,そして可能性として将来はセキュリティ,を拡張する.この関数は異なったインタフェイス,つまり .C, .Call, .Fortranそして .External,に対する DLL中の各登録ルーチンの説明を提供する.

Usage

getDLLRegisteredRoutines(dll, addNames = TRUE)

Arguments

dll 文字列又は DLLInfoオブジェクト.文字列は興味のある DLL noファイル名を指定し,ファイル拡張子 (つまり ‘.dll’ や ‘.so’) やディレクトリ/パス情報無しで与えられる.従ってファイル ‘MyPackage/libs/MyPackage.so’は ‘MyPackage’として指定される.DLLInfoオブジェクトは dyn.loadと library.dynamへの呼び出し中で直接得ることができる.また getLoadedDLLsを使って DLLがロードされた後で見つけることが出来る.これは DLLInfoオブジェクトのリストである(DLLファイル名で添え字化出来る).DLLInfoアプローチは同じ名前を持つが異なるディレクトリ中にあるファイルに対応する二つの DLLに関係する任意の曖昧さを避ける.

addNames 論理値.もしこれが TRUE なら返り値リストの要素はルーチン名(登録によって R が理解する又は素の名前)を使って名前付けられる.もしFALSEならばこれらの名前は計算されずリストに付加される.結果として呼び出しは早くなる.名前情報はまたリスト中の NativeSymbolInfoオブジェクト中でも得られる.

Page 232: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

232 getDLLRegisteredRoutines

Details

これは登録され Rの内部機構で処理された後の登録情報を取る.換言すればそれは拡張情報を使う.

このクラスに対する printメソッドがあり,登録されたルーチンの型だけをプリントする.

Value

クラス "DLLRegisteredRoutines"のリストで .C, .Call, .Fortranそして .Externalインタフェイスに対して登録されたルーチンに対応する四つの要素を持つ.各々はそのインタフェイスに登録されたルーチンと同じ数の要素を持つリストである.

各要素はルーチンを特定しクラス "NativeSymbolInfo"のオブジェクトである.このクラスのオブジェクトは以下の欄を持つ:

name ルーチンの登録名(Cコード中の名前とは限らない).

address ロードされた DLL 中で解決されたようなルーチンのメモリアドレス.もしシンボルがまだ解決されていなければ NULLかもしれない.

dll DLLを記述するクラス DLLInfoのオブジェクト.これは返されるすべての要素で同一である.

numParameters ネイティブルーチンが呼び出された際の引数の数.将来はパラメータの型に関する情報がまた提供されるであろう.

Author(s)

Duncan Temple Lang <[email protected]>

References

シンボルの登録は ‘Writing R Extensions Manual’.

R News, Volume 1/3, September 2001. "In search of C/C++ & Fortran Symbols"

See Also

getLoadedDLLs,リストされたエントリポイントに関する情報は getNativeSymbolInfo.

Examples

dlls <- getLoadedDLLs()getDLLRegisteredRoutines(dlls[["base"]])

getDLLRegisteredRoutines("stats")

Page 233: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

getLoadedDLLs 233

getLoadedDLLs Get DLLs Loaded in Current Session

Description

この関数は Rセッションに現在ロードされているすべての DLL (dyn.loadを見よ)のリストを得る手段を提供する.

Usage

getLoadedDLLs()

Details

これは DLLを管理する内部テーブルに問い合わせる.

Value

現在のセッション中にロードされている各 DLL に対応するリストであるクラス"DLLInfoList" のオブジェクト.各要素は以下の項目を持つクラス "DLLInfo" のオブジェクトである.

name 省略された名前.

path ロードされた DLLの正式名.

dynamicLookup Rがシンボルを解決するのに登録情報だけを使っているか,又はそれが DLLの全シンボルテーブルを検索するかを示す論理値.

handle DLL の内容へのアクセスを提供する C レベルのデータ構造への参照.これはクラス "DLLHandle"のオブジェクトである.

クラス DLLInfoは $に対するオーバーロードメソッドを持ち,それはネイティブシンボルを DLL内部で解決するのに使うことが出来る.従って,上で説明された Rレベルの要素に [[を使ってアクセスしなければならない,つまり x[["name"]]や x[["handle"]]のようにである.

Note

我々は R中でより直接にシンボルを解決するため DLLオブジェクト中の handle要素を使うことを開始している.

Author(s)

Duncan Temple Lang <[email protected]>.

See Also

getDLLRegisteredRoutines, getNativeSymbolInfo

Examples

getLoadedDLLs()

Page 234: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

234 getNativeSymbolInfo

getNativeSymbolInfo Obtain a Description of one or more Native (C/Fortran) Symbols

Description

これは一つ又はそれ以上の動的にロードされた,又は ‘エキスポート’された組み込みネイティブシンボルを探し説明を返す.各名前に対し,それはシンボルの名前,それが存在するライブラリ,そしてもしあればそれが期待する引数の数とそれが呼び出されるインタフェイス (つまり .Call, .C, .Fortran又は .External)の情報を返す.加えて,それはシンボルのアドレスを返し,そしてこれは他の Cルーチンに引き渡すことが出来る.特に,これは異なった動的にロードされたパッケージライブラリ間で明示的にシンボルを共有する方法を提供する.また,それはどこでシンボルが解決されたかを問い合わせする方法を提供し,そして動的な解決に伴う奇妙な挙動の診断を助ける.

Usage

getNativeSymbolInfo(name, PACKAGE, unlist = TRUE,withRegistrationInfo = FALSE)

Arguments

name ネイティブなシンボルの名前.

PACKAGE このシンボルの探索をどの DLLに局限するかを指示するオプションの引数.もしこれが "base"ならば Rの実行ファイル自体で探す.

unlist もし関数が単一の名前で呼び出された時結果をどのように返すかを制御する論理値.もし unlist が TRUE で name 中のシンボルが一つならば NativeSymbolInfoオブジェクトが返される.もしそれが FALSEならば NativeSymbolInfo オブジェクトのリストが返される.これはもしnamaeに渡されたシンボルの数が複数ならば無視される.この関数の以前のバージョンとの互換性からこれの既定値は TRUEとされている.

withRegistrationInfo

論理値.もし TRUEならば,もしそうしたものがあればシンボルについて Rに登録された情報とそのパラメータの型を返す.もしくは FALSEならば単にシンボルのアドレスを返す.

Details

これはすべてのネイティブなインタフェイス(.Call等)中で使われているようなシンボル解決に対するのと同じ機構を使っている.もしシンボルがそれが含まれている DLLによって明示的に登録されていれば,引数の数やそれが呼び出されるインタフェイスに関する情報が返される.さもなければ総称的なネイティブシンボルのオブジェクトが返される.

Value

一般に,その要素が呼び出し中の nameの要素で添字付けられた NativeSymbolInfo要素のリスト.各 NativeSymbolInfoオブジェクトは以下の要素を含むリストである

name name引数で与えられたようなシンボルの名前.

Page 235: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

getNativeSymbolInfo 235

address もし withRegistrationInfoが FALSEならば,これはネイティブなシンボルのメモリアドレスで,そのルーチンを起動するのに使うことができ,また他のシンボルアドレスと比較できる.これは外部ポインタオブジェクトでクラス NativeSymbolである.もし withRegistrationInfoが TRUEで登録情報がそのシンボルに対して利用できれば,これはクラス RegisteredNativeSymbolのオブジェクトであり,ルーチンのポインタと登録情報へのアクセスを持つ内部データ型への参照である.これも .Call, .C, .Fortranそして .Externalへの呼び出しに使える.

package 三つの要素を含むリスト:

name 異なったネイティブインタフェイス関数で PACKAGE引数の値として使うことが出来るライブラリ名の短縮形.

path DLLの完全な名前.dynamicLookup 論理値で,このライブラリ中でシンボルを探す際動的な解決を使うか,又は登録されたルーチンの位置だけが示されるか,を指示する.

もしルーチンが動的にロードされたライブラリによって明示的に登録されていれば,リストは4番目の欄をもつ

numParameters このルーチンへの呼び出し中に渡されるべき引数の数.

加えて,リストはそれが起動されるべき R インタフェイスに対応する CRoutine,CallRoutine, FortranRoutine又は ExternalRoutineという追加のクラスを持つ.

もしシンボルのどれもが見つからなければエラーが起きる.

もし nameが唯一つのシンボル名を含みそして unlistが TRUEならば,その要素を含むリストではなく,一つの NativeSymbolInfoが返される.

Note

この反射的な情報へのアクセスに対する一つのモチベーションはネイティブなルーチンを Cの関数ポインタとしての Cルーチンに渡すことを可能にすることである.これはネイティブなルーチンと R関数を同じ流儀で扱うことを可能にする.例えば,その計算中の異なった箇所である R関数を再訪する Cコードに R関数を引き渡す際等である(例えば nls).加えて,シンボルを単に一度だけ解決し,それを何度も解決したり内部的なキャッシュを使うことを避けることが出来る.

Author(s)

Duncan Temple Lang

References

ネイティブなシンボルの登録に関する情報については “In Search of C/C++ & FOR-TRAN Routines”, R-News, volume 1, number 3, 2001, p20–23 (https://www.r-project.org/doc/Rnews/Rnews_2001-3.pdf)を見よ.

See Also

getDLLRegisteredRoutines, is.loaded, .C, .Fortran, .External, .Call, dyn.load.

Page 236: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

236 gettext

gettext Translate Text Messages

Description

もしこの Rの構築で自然言語のサポートが有効化されていれば文字列ベクトルを翻訳する,又はどこで翻訳が見つかるかを設定する.

Usage

gettext(..., domain = NULL)

ngettext(n, msg1, msg2, domain = NULL)

bindtextdomain(domain, dirname = NULL)

Arguments

... 一つもしくはそれ以上の文字列ベクトル.

domain 翻訳のための‘ドメイン’.

n 非負整数.

msg1 n = 1に対して使われる英語メセージ.

msg2 n = 0, 2, 3, ... に対して使われる英語メッセージ.

dirname ドメインに対する翻訳メッセージを見つけるディレクトリ.

Details

もし domain が NULL か "" で,gettext がパッケージ pkg の名前空間中の関数から呼び出されていれば,ドメインは "R-pkg"に設定される.さもなければ既定のドメインは無い.

もし適当なドメインが見つかれば,各文字列が翻訳のために提供され,もし見つかればその翻訳によって現在の言語に置き換えられる.値(論理値) NA は任意の翻訳を抑制する.

便宜上パッケージ pkg中の Rの警告/エラーメッセージのドメインは "R-pkg"であり,Cレベルのメッセージのそれは "pkg"である.

gettextに対しては翻訳を探す時,先頭と末尾の空白は無視される.

ngettextはメッセージが一つの整数で変化する必要がある箇所で使われる.そうしたメッセージの翻訳は異なった言語に対しては非常に固有な規則の下にある:GNU GettextManualを見よ.文字列はしばしば sprintf中で使われる単一の %dの例を含むであろう.もし英語が使われれば,msg1はもし n == 1ならば,その他のすべてのケースでは msg2が使われる.

bindtextdomainは同名の C関数に対するラッパである:使用中のシステムはそれに対する manページを持つかもしれない. dirnameが NULLでなければ,それはメッセージのカタログをどこで探すかを指示する: domain = NULLならばそれは現在の位置を返す.

Page 237: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

getwd 237

Value

gettextに対しては文字列ベクトルで,... 中の文字列毎に一つの要素を持つ.もし翻訳が不可能か,如何なるドメインも見つからないか,そのドメイン中に翻訳がみつからなければ,元々の文字列が返される.

ngettextに対しては文字列.

bindtextdomainに対しては現在の基本ディレクトリを与える文字列,又はそれを設定するのが失敗すれば NULL.

See Also

stopと warningはメッセージの翻訳に gettextを使う.

Rのソースファイルから翻訳可能な文字列を取り出すには xgettext.

Examples

bindtextdomain("R") # NLS が有効な時,そしてその時に限り NULL でない

for(n in 0:3)print(sprintf(ngettext(n, "%d variable has missing values",

"%d variables have missing values"),n))

## Not run:## 翻訳に対して,これらの文字列は R-pkg.pot 中に次のように登場すべきであるmsgid "%d variable has missing values"msgid_plural "%d variables have missing values"msgstr[0] ""msgstr[1] ""

## End(Not run)

miss <- c("one", "or", "another")cat(ngettext(length(miss), "variable", "variables"),

paste(sQuote(miss), collapse = ", "),ngettext(length(miss), "contains", "contain"), "missing values\n")

## 翻訳者にお勧めの使用法cat(sprintf(ngettext(length(miss),

"variable %s contains missing values\n","variables %s contain missing values\n"),

paste(sQuote(miss), collapse = ", ")))

getwd Get or Set Working Directory

Description

getwdはRプロセスの現在の作業ディレクトリを表す絶対ファイルパスを返す;setwd(dir)は作業ディレクトリを dirに設定する.

Page 238: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

238 gl

Usage

getwd()setwd(dir)

Arguments

dir 文字列;チルド展開が行われる.

Value

getwdは文字列か,もし作業ディレクトリが利用できなければ NULLを返す.Windowsでは返り値のパスは分離記号をとして /を使い UTF-8でエンコードされる.パスはそれがルートディレクトリ (Windowsではドライブかシェア)でない限り末尾に /を持たない.

setwd は変更前に現在のディレクトリを返す.不可視であり getwd と同じ慣例を持つ.それはもし不成功であれば(未実装の場合を含む)エラーを返す.

Note

返り値は一つの絶対ファイルパスである:ディレクトリへのパスの表現式は複数あり得,ある種の OSでは返り値はディレクトリを変更しまた同じディレクトリに戻っても異なることがあり得る (例えばシンボリックリンクを横切った場合).

See Also

ディレクトリの内容には list.files.

‘標準的’なパス名には normalizePath.

Examples

(WD <- getwd())if (!is.null(WD)) setwd(WD)

gl Generate Factor Levels

Description

水準のパターンを指定して因子を生成する.

Usage

gl(n, k, length = n*k, labels = seq_len(n), ordered = FALSE)

Arguments

n 水準の数を与える整数.

k 繰り返し数を与える整数.

length 結果の長さを与える整数.

labels 結果の水準に対するオプションのラベルのベクトル.

ordered 結果が順序付きかそうでないかを指示する論理値.

Page 239: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

grep 239

Value

結果は 1から nまでをそれぞれ総計の長さ lengthの内長さ kのグループに繰り返した水準である.

glは同名の GLIMの関数を真似ている.

See Also

基礎にある factor().

Examples

## 最初は Control,それから Treat:gl(2, 8, labels = c("Control", "Treat"))## 20 は 1 と 2 を変えるsgl(2, 1, 20)## 1 と 2 の対を変えるgl(2, 2, 20)

grep Pattern Matching and Replacement

Description

grep, grepl, regexpr, gregexprそして regexecは引数 patternにマッチするものを文字列ベクトル中の各要素中で探す:これらは結果中の書式と説明の量で異なる.

subと gsubはそれぞれ最初とすべてのマッチしたものを置き換える.

Usage

grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE,fixed = FALSE, useBytes = FALSE, invert = FALSE)

grepl(pattern, x, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE)

sub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE)

gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE)

regexpr(pattern, text, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE)

gregexpr(pattern, text, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE)

regexec(pattern, text, ignore.case = FALSE,fixed = FALSE, useBytes = FALSE)

Page 240: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

240 grep

Arguments

pattern 与えられた文字列ベクトル中でマッチされるべき正規表現を含む文字列(または fixed = TRUEに対しては文字列).可能ならば as.characterで文字列に変換される.もし長さ2もしくはそれ以上の文字列ベクトルが与えられると最初の文字列が警告と共に使われる.regexpr とgregexprを除いて欠損値が許される.

x, text マッチが探される文字列ベクトル,又は as.characterで文字列ベクトルに変換できるオブジェクト. long vectorsがサポートされている.

ignore.case もし FALSEならパターンマッチングは大・小文字を区別する.またもし TRUEならばマッチングの間大・小文字は区別されない.

perl 論理値.Perl n互換の正規表現を使うか?

value もし FALSEなら grepで決定されたマッチの整数添字を含むベクトルが返される.またもし TRUEならばマッチした要素自体を含むベクトルが返される.

fixed 論理値.もし TRUEなら patternはそのままでマッチされる文字列.矛盾するすべての引数は無視される.

useBytes 論理値.もし TRUEならばマッチングは文字ごとではなくバイトごとに行われる.‘詳細’を見よ.

invert 論理値.もし TRUEならマッチしない要素に対し添え字か値を返す.

replacement subと gsub中でマッチしたパターンに対する置き換え.もし可能ならば文字列に変換される. fixed = FALSEに対してはこれは patternの括弧で囲まれた副表現に対するバック参照 "\1"から "\9"を含むことが出来る. perl = TRUEに対してだけは,これはまた置き換えの残りを大文字もしくは小文字に変える "\U"か "\L",そして end caseへの変換である "\E"を含むことが出来る.もし2もしくはそれ以上の長さの文字列ベクトルが与えられると,最初の要素が使われ警告が出る.もしNAならマッチに対応する結果中のすべての要素は NAに設定される.

Details

文字列や文字列ベクトルであるべき引数はもし可能なら文字列に変換される.

これらの関数の各々(現在 Perlスタイルの正規表現をサポートしない regexecを除く)は三つのモードのどれかで操作を行う:

1. fixed = TRUE:正確なマッチングを使う.

2. perl = TRUE: Perlスタイルの正規表現.

3. fixed = FALSE, perl = FALSE: POSIX 1003.2拡張正規表現を使う.

異なったタイプの正規表現に関する詳細は regular expressionに関するヘルプ頁を見よ.

二つの *sub関数は subが patternが最初に起きた時に置き換え,gsubがすべてを置き換える点で異なる.もし replacementが pattern中に定義されていないバック参照を含めば,結果は未定義である(しかし最も普通にはバック参照は ""とされる).

regexpr, gregexprそして regexecに対しては patternが NAになるのはエラーになる.さもなければ NAが許され NAマッチを与える.

useBytesの主要効果は不正な入力と多バイトロケールに於ける偽りのマッチに関してエラー/警告を避けることであるが, regexprに対してはそれは出力の解釈を変更する.それはマーク付きのエンコーディングを持つ入力の変換を禁止し,もし "bytes"とマークされた何らかの入力があれば強制される

Page 241: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

grep 241

多バイトロケールでの大・小文字の区別なしのマッチングはあまり意味を持たず,useBytes = TRUEならばアスキー文字に対してだけ動作することを期待すべきである.

perl = TRUEでの regexprと gregexprは Python風の名前付きキャプチャーを許すが,long vector入力に対してはそうではない.

現在のロケールでの不正な入力は最大5回まで警告される.

非アスキー文字に対する大・小文字の区別なしの PERL = TRUE を使ったマッチングはPCREライブラリが ‘Unicode property support’付きでコンパイルされていることに依存する:外部ライブラリはされていないかもしれない.

Value

(invert = TRUEを除き) grep(value = FALSE)はマッチがあった xの要素の添字のベクトルを返すこれは入力がロングベクトルでなければ整数ベクトルになり,さもなければ倍精度実数ベクトルになる.

grep(value = TRUE)は xの選択された要素を含む文字列ベクトルを返す(強制変換され,名前は保存するが他の属性は保存しない).

greplは論理値ベクトルを返す(xの各要素にマッチしたか否かを指示する).

subと gsubに対しては,xと同じ長さと属性を持つ文字列ベクトルを返す(可能性として文字列への変換後).取り替えられなかった文字列ベクトル xの要素はそのまま返される(任意の宣言されたエンコーディングを含む).もし useBytes = FALSEなら非アスキーの取り替えられた結果はしばしばマーク付きエンコーディングを持つ UTF-8で表現されている (つまり fixed = TRUEで無い限り,もし UTF-8の入力がありそして多バイトロケール中ならば). そうした文字列は enc2nativeで再エンコーディングすることが出来る.

regexprは textと同じ長さの整数ベクトルを返し,最初のマッチ箇所かもしそれがなければ−1を与え,属性 "match.length"を持つ.マッチする位置と長さは useBytes = TRUEならば文字数単位で,さもなければバイト数単位である.もし名前付きキャプチャーが使われれば更に属性 "capture.start", "capture.length"そして "capture.names"が付く.

gregexprは textと同じ長さのリストを返す.その各要素は regexprに対する返り値と同じ形式であるが,すべての(排反な)マッチの開始位置が与えられる.

regexecは xと同じ長さのリストを返す.その各要素はマッチがなければ −1か,マッチした開始地点の整数列と,patternのすべての括弧付きの副表現に対応する副文字列と,マッチの長さ(またはマッチしなければ −1)のベクトルである属性 "match.length"を持つ.

警告

gsub と gregexpr の POSIX 1003.2 モードは繰り返される単語境界では正しく動作しない(例えば pattern = "\b").そうしたマッチには perl = TRUEを使う.(しかし‘単語’の意味はシステム依存であるため,それは非アスキー入力では期待されるようには動作しないかもしれない).

実行性能の検討

非常に長い文字列を含む,大量の正規表現マッチングを行うのなら,使われるオプションを考慮したくなるであろう.一般に PCRE は既定の正規表現エンジンより速く,fixed = TRUEは更に速い(特に各パターンが数回だけマッチされる場合).

単バイトロケールとそのロケールで表現可能なマーク付き UTF-8 文字列を操作しているのなら,それらを先ずたった一つの UTF-8文字列に変換すればすべてのマッチングは

Page 242: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

242 grep

Unicodeで行われ,これは既定の POSIX 1003.2モードに対しては約3倍のペナルティを招く.

もし useBytes = TRUEが使えるのならば,文字列はマッチングの前にチェックされず,実際のマッチングは速くなる.しばしばバイトに基づくマッチングは,一つの文字は決して別の部分にマッチしないため,UTF-8ロケールで十分である.

Source

POSIXスタイルの正規表現マッチングに対する Cコードは年と共に変化してきている.R 2.10.0以来 Ville Laurikariの TREライブラリ (http://laurikari.net/tre/)が使われている.POSIX標準は,特に不正な正規表現と文字列範囲の照合の処理で,幾らかの解釈の余地を与えているため,結果は年と共に少し変わるであろう.

Perlスタイルのマッチングには PCRE (http://www.pcre.org)が使われている.

References

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

See Also

パターン指定の詳細は regular expression (regexpとしても知られている).

regexpr, gregexpr そして regexec を使ってマッチした部分文字列の取り出しにはregmatches.

ワイルドカードを正規表現に転換するには glob2rx.

近似マッチングには agrep.

部分マッチには charmatch, pmatch,文字列全体へのマッチには match.

文字変換には tolower, toupperそして chartr.

aproposは正規表現を使いより多くの例を持つ.

バイトベクトルのマッチングには grepRaw.

Examples

grep("[a-z]", letters)

txt <- c("arm","foot","lefroo", "bafoobar")if(length(i <- grep("foo", txt)))

cat("'foo' appears at least once in\n\t", txt, "\n")i # 2 と 4txt[i]

## すべての 'a' か 'b' を倍にする;"\" はエスケープ化の必要,つまり## gsub("([ab])", "\\1_\\1_", "abc and ABC")

txt <- c("The", "licenses", "for", "most", "software", "are","designed", "to", "take", "away", "your", "freedom","to", "share", "and", "change", "it.","", "By", "contrast,", "the", "GNU", "General", "Public", "License","is", "intended", "to", "guarantee", "your", "freedom", "to","share", "and", "change", "free", "software", "--","to", "make", "sure", "the", "software", "is","free", "for", "all", "its", "users")

Page 243: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

grep 243

( i <- grep("[gu]", txt) ) # 添字stopifnot( txt[i] == grep("[gu]", txt, value = TRUE) )

## en_US 等のロケールではこれは以下のように B を含む## 並べる順序は aAbBcCdEe ...(ot <- sub("[b-e]",".", txt))txt[ot != gsub("[b-e]",".", txt)]#- gsub は"大局的"な代入を行う

txt[gsub("g","#", txt) !=gsub("g","#", txt, ignore.case = TRUE)] # 単語 "G"

regexpr("en", txt)

gregexpr("e", txt)

## grepl() をフィルタリングに使う## 引数名が "warn" にマッチする関数を返す:findArgs <- function(env, pattern) {

nms <- ls(envir = as.environment(env))nms <- nms[is.na(match(nms, c("F","T")))] # <-- 応急措置の "checking hack"aa <- sapply(nms, function(.) { o <- get(.)

if(is.function(o)) names(formals(o)) })iw <- sapply(aa, function(a) any(grepl(pattern, a, ignore.case=TRUE)))aa[iw]

}findArgs("package:base", "warn")

## 末尾の空白を刈り詰めstr <- "Now is the time "sub(" +$", "", str) ## 空白だけ## 何が '空白' かはロケールに依存sub("[[:space:]]+$", "", str) ## 空白,POSIX スタイル## PCRE が空白と見做すものはバージョン 8.34 で変更された:?regex を見よsub("\\s+$", "", str, perl = TRUE) ## PCRE スタイルの空白

## 大文字化txt <- "a test of capitalizing"gsub("(\\w)(\\w*)", "\\U\\1\\L\\2", txt, perl=TRUE)gsub("\\b(\\w)", "\\U\\1", txt, perl=TRUE)

txt2 <- "useRs may fly into JFK or laGuardia"gsub("(\\w)(\\w*)(\\w)", "\\U\\1\\E\\2\\U\\3", txt2, perl=TRUE)sub("(\\w)(\\w*)(\\w)", "\\U\\1\\E\\2\\U\\3", txt2, perl=TRUE)

## 名前付きの捕捉notables <- c(" Ben Franklin and Jefferson Davis",

"\tMillard Fillmore")# 名前グループ 'first' と 'last'name.rex <- "(?<first>[[:upper:]][[:lower:]]+) (?<last>[[:upper:]][[:lower:]]+)"(parsed <- regexpr(name.rex, notables, perl = TRUE))gregexpr(name.rex, notables, perl = TRUE)[[2]]parse.one <- function(res, result) {

m <- do.call(rbind, lapply(seq_along(res), function(i) {if(result[i] == -1) return("")st <- attr(result, "capture.start")[i, ]substring(res[i], st, st + attr(result, "capture.length")[i, ] - 1)

}))

Page 244: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

244 grepRaw

colnames(m) <- attr(result, "capture.names")m

}parse.one(notables, parsed)

## URL をその成分に分解.## Example by LT (http://www.cs.uiowa.edu/~luke/R/regexp.html).x <- "http://stat.umn.edu:80/xyz"m <- regexec("^(([^:]+)://)?([^:/]+)(:([0-9]+))?(/.*)", x)mregmatches(x, m)## 要素 3 はプロトコル,4 はホスト,6 はポート,そして 7 はパス.## これを使って URL の部分を取り出す関数を作れる:URL_parts <- function(x) {

m <- regexec("^(([^:]+)://)?([^:/]+)(:([0-9]+))?(/.*)", x)parts <- do.call(rbind,

lapply(regmatches(x, m), `[`, c(3L, 4L, 6L, 7L)))colnames(parts) <- c("protocol","host","port","path")parts

}URL_parts(x)

## まだ gregexec() は無いが,regexec() を gregexpr() 経由で得られた## 再マッチに regexec() を実行することでエミュレート出来る.例えば:pattern <- "([[:alpha:]]+)([[:digit:]]+)"s <- "Test: A1 BC23 DEF456"lapply(regmatches(s, gregexpr(pattern, s)),

function(e) regmatches(e, regexec(pattern, e)))

grepRaw Pattern Matching for Raw Vectors

Description

grepRawはバイトベクトル x中で副文字列 patternのマッチを探す.

Usage

grepRaw(pattern, x, offset = 1L, ignore.case = FALSE,value = FALSE, fixed = FALSE, all = FALSE, invert = FALSE)

Arguments

pattern 与えられたバイトベクトル中でマッチされるべき正規表現 (又はfixed = TRUE に対しては固定パターン)を含むバイトベクトル.もし可能なら charToRawで文字列に変換される.

x マッチが探されるバイトベクトル,もしくは charToRawでバイトベクトルに変換可能なオブジェクト.ロングベクトルはサポートされていない.

ignore.case もし FALSEならば,パターンマッチングは大・小文字を区別し,もしTRUEなら大・小文字の区別はマッチングの間無視される.

Page 245: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

grepRaw 245

offset 探索がそこから開始されるべきオフセットを指定する整数.正でなければならない.行の先頭はそのオフセットで定義されるので "^"はそこでマッチする.

value 論理値.返り値を決定する:‘値’を見よ.

fixed 論理値.もし TRUEならば patternはそのままでマッチされるべきパターンである.

all 論理値.もし TRUEならばすべてのマッチが返される.さもなければ単に最初だけが返される.

invert 論理値.もし TRUEならばマッチしなかった要素に対する添字や値が返される.value = TRUEで無い限り(警告と共に)無視される.

Details

grep とは異なりバイトベクトル x の中でマッチングパターンを求める.これは特にall = TRUEのケース中で意味を持つ.例えば,空文字列にマッチするパターンが本質的に無限個で,従って予期しない結果に導く可能性がある場合である.

引数 invertはマッチの補集合を返すように要求すると解釈される.これは value = TRUEの場合だけ意味を持つ.引数 offsetは検索の開始位置を決定し,補集合のそれではない. all = TRUEの時の invert = TRUEは xを先頭と末尾の空文字列を含むパターンで区切られた部分に分割する (従ってこの場合に "^"や "$"を伴う正規表現を使うとより直感的でない結果に導く可能性がある).

value = TRUEを伴う fixed = TRUEのような引数の組み込みはサポートされているがあまり意味がない.

Value

grepRaw(value = FALSE)はマッチが起きた場所のオフセットの整数ベクトルを返す.もし all = FALSEならばこれは長さ0(マッチ無し)か長さ1(最初のマッチング位置)である.

grepRaw(value = TRUE, all = FALSE) はバイトベクトルを返す.これは空(マッチ無し)か xのマッチした部分である.

grepRaw(value = TRUE, all = TRUE)はマッチした部分に対応するバイトベクトルのリスト(可能性として空の)を返す.

Source

fixed = TRUE の場合を除き Ville Laurikari の TRE ライブラリ (http://laurikari.net/tre/)が使われる.

See Also

パターン指定の詳細は regular expression (regexpとしても知られている).

文字列ベクトルのマッチングについては grep.

Page 246: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

246 groupGeneric

groupGeneric S3 Group Generic Functions

Description

グループ総称的メソッドは四つの予め指定された関数のグループ Math, Ops, Summaryそして Complexに対して定義できる.. (Rの基本パッケージにはこれらの名前のオブジェクトは無いが, methodsパッケージにはある.)

グループの個別のメンバーに対して定義されたメソッドはグループ全体に対して定義されたメソッドに優先する.

Usage

## グループ総称的 S3 メソッドは次のプロトタイプを持つ:Math(x, ...)Ops(e1, e2)Complex(z)Summary(..., na.rm = FALSE)

Arguments

x, z, e1, e2 オブジェクト.

... メソッドに渡される追加引数.

na.rm 論理値:欠損値を取り除くべきか?

Details

S3 メソッドが掛ける四つのグループがある.つまり "Math", "Ops", "Summary" そして"Complex" グループである.コレアは R の基本パッケージ中のオブジェクトではないが,それらに対するメソッドを提供でき,R の基本パッケージは最初の三つのグループに対する factor, data.frame そして difftime メソッドを含む. (また Ops に対するorderedメソッド,Mathと Opsに対する POSIXtと Dateメソッド,Opsと Summaryに対する package_versionメソッド,そしてパッケージ stats中に Opsに対する tsメソッドがある.)

1. グループ "Math":

• abs, sign, sqrt,floor, ceiling, trunc,round, signif

• exp, log, expm1, log1p,cos, sin, tan,cospi, sinpi, tanpi,acos, asin, atancosh, sinh, tanh,acosh, asinh, atanh

• lgamma, gamma, digamma, trigamma• cumsum, cumprod, cummax, cummin

Page 247: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

groupGeneric 247

このグループのメンバーは xに対してメソッドを選択適用する.殆どのメンバーは引数が一つだけのものを受け入れるが,メンバー log, roundそして signifは一つもしくは二つの引数を受け入れ,そして truncは一つもしくはそれ以上を引き受ける.

2. グループ "Ops":

• "+", "-", "*", "/", "^", "%%", "%/%"• "&", "|", "!"• "==", "!=", "<", "<=", ">=", ">"

このグループは単項と二項演算子を含む(+, -そして !):単項演算子に出会うと Opsメソッドが引数一つで呼び出され e2は無い.

どちらの引数のクラスもこのグループの任意のメンバーに選択適用されると考えられている.各引数に対してそのクラスのベクトルが特定の(優先)メソッドか Opsメソッドにマッチするかが吟味される.もしあるメソッドが唯一つの引数と二つの引数用に見つかればそれが使われる.もし異なったメソッドが見つかれば ‘不整合なメソッド’という警告がである:その場合もしくはどちらの引数に対するメソッドが一つもみつからない場合は内部的なメソッドが使われる.

もしこのグループのメンバーが関数として呼び出されると,位置によるマッチングが保証されるように任意の引数名は取り除かれる.

3. グループ "Summary":

• all, any• sum, prod• min, max• range

このグループのメンバーは与えられた最初の引数に関して選択適用を行う.

4. Group "Complex":

• Arg, Conj, Im, Mod, Re

このグループのメンバーは zに対して選択適用を行う.

内部コードは oldClassに対して選択適用を行い classに対してではないため,一つのメソッドはこれらのグループの一つに対して使われるか,もしそれが一つの "class"属性だけに対応すればそのメンバーに選択適用される.これは効率性のためである:例えばOps.integerの選択適用は遅すぎるであろう.

"Math"グループ総称的メソッドのプリミティブなメンバーに対して提供される引数の数は選択適用に先立ってチェックされない.

グループ-総称的関数に対する引数の遅延評価はなされない.

技術的詳細

これらの関数はすべてプリミティブで内部総称的である.

メソッドの選択適用と .Genericのような変数は UseMethodに対するヘルプで議論されている.僅かな小さな違いがある:

• グループ Opsの演算子に対しては,オブジェクト .Methodは長さが2の文字列ベクトルであり,それぞれ左と右の引数に対して選択されたメソッドを要素に持つ.(もしどのメソッドも選択されないと対応する要素は ""になる.)

• オブジェクト .Groupは選択適用に対して使われたグループを記録する(もし個別メソッドが使われるとこれは ""になる).

Page 248: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

248 grouping

Note

パッケージ methodsはこれらの名前を持つオブジェクトを含む.それは混乱させられる似通った(しかし異なった)方法でそれを再利用する.このパッケージに対するヘルプを見よ.

References

Appendix A, Classes and Methods ofChambers, J. M. and Hastie, T. J. eds (1992) Statistical Models in S. Wadsworth & Brooks/Cole.

See Also

非内部的な総称的関数のメソッドに対しては methods.

S4メソッドに対するグループ総称的メソッドは S4groupGeneric.

Examples

require(utils)

d.fr <- data.frame(x = 1:9, y = stats::rnorm(9))class(1 + d.fr) == "data.frame" ##-- d.f. に加える ...

methods("Math")methods("Ops")methods("Summary")methods("Complex") # base R には無い

grouping Grouping Permutation

Description

grouping returns a permutation which rearranges its first argument such that identical values areadjacent to each other. Also returned as attributes are the group-wise partitioning and the maximumgroup size.

Usage

grouping(...)

Arguments

... a sequence of numeric, character or logical vectors, all of the same length, or aclassed R object.

Page 249: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

gzcon 249

Details

The function partially sorts the elements so that identical values are adjacent. NA values come first.This is guaranteed to be stable, so ties are preserved, and if the data are already grouped/sorted, thegrouping is unchanged. This is useful for aggregation and is particularly fast for character vectors.

Under the covers, the "radix" method of order is used, and the same caveats apply, including re-duced precision when comparing real values, restrictions on character encodings and lack of supportfor long vectors (those with 231 or more elements).

Like order, for a classed R object the grouping is based on the result of xtfrm.

Value

An object of class "grouping", the representation of which should be considered experimental andsubject to change. It is an integer vector with two attributes:

ends subscripts in the result corresponding to the last member of each group

maxgrpn the maximum group size

See Also

order, xtfrm.

Examples

(ii <- grouping(x <- c(1, 1, 3:1, 1:4, 3), y <- c(9, 9:1), z <- c(2, 1:9)))## 6 5 2 1 7 4 10 8 3 9rbind(x, y, z)[, ii]

gzcon (De)compress I/O Through Connections

Description

gzconは既存のコネクションをラップする修正コネクションを提供する.そしてそのコネクションを経由して解凍読み取りや圧縮書き込みができるようになる.標準的な gzipヘッダが仮定される.

Usage

gzcon(con, level = 6, allowNonCompressed = TRUE)

Arguments

con コネクション.

level 0と 9の間の整数,書き込み時の圧縮レベル.allowNonCompressed

論理値.読み込み時非圧縮入力を認めるか?

Page 250: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

250 gzcon

Details

もし conが開かれていれば修正されたコネクションが開かれる.ラッパコネクションを閉じれば基礎にあるコネクションも閉じられる.

gzipのマジックヘッダーを提供しないコネクションからの読み取りは,もしallowNonCompressedが真なら元のコネクションからの読み取りに同値であるが,さもなければエラーになる.

圧縮出力は埋め込まれた NULバイトを含み,従って conは open = "w"で開かれたtextConnectionであることは許されない.データを変数に圧縮するには書き込み可能なrawConnectionを使う.

元のコネクションは使用できなくなる:それを指し示す任意のオブジェクトは今や修正コネクションを参照するようになる.この理由から新しいコネクションは明示的に閉じられる必要がある.

Value

クラス "connection"を継承するオブジェクト.これは提供されたのと同じコネクション番号であるが,修正された内部構造を持つ.これはバイナリーモードを持つ.

See Also

gzfile

Examples

## URL からの非圧縮データファイルz <- gzcon(url("http://www.stats.ox.ac.uk/pub/datasets/csb/ch12.dat.gz"))# read.table はテキストモードのコネクションからだけ読み取れるraw <- textConnection(readLines(z))close(z)dat <- read.table(raw)close(raw)dat[1:4, ]

## gzfile と gzcon は相互連携できる.## ここでは勿論 gzfile を使うが,file() はすべての他のコネクション生成器で## 置き換えられる.zz <- gzfile("ex.gz", "w")cat("TITLE extra line", "2 3 5 7", "", "11 13 17", file = zz, sep = "\n")close(zz)readLines(zz <- gzcon(file("ex.gz", "rb")))close(zz)unlink("ex.gz")

zz <- gzcon(file("ex2.gz", "wb"))cat("TITLE extra line", "2 3 5 7", "", "11 13 17", file = zz, sep = "\n")close(zz)readLines(zz <- gzfile("ex2.gz"))close(zz)unlink("ex2.gz")

Page 251: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

hexmode 251

hexmode Display Numbers in Hexadecimal

Description

整数を16進法書式に変換したりプリントしたりする.最大値を表示するのに必要な桁数を用い,必要なら先頭にゼロを加える.

Usage

as.hexmode(x)

## S3 method for class 'hexmode'as.character(x, ...)

## S3 method for class 'hexmode'format(x, width = NULL, upper.case = FALSE, ...)

## S3 method for class 'hexmode'print(x, ...)

Arguments

x クラス "hexmode"を継承するメソッドに対するオブジェクト.

width NULL 又は使用する最小幅を指定する正整数.先頭はゼロで埋められる.

upper.case 大文字を使うか小文字を使うかを指示する論理値.

... 他のメソッドに・へ渡される追加引数.

Details

クラス "hexmode"はその属性を持つ整数ベクトルからなり,単にそれらが16進数でプリントされることを保証するのに使われる.

もし width = NULL (既定)ならば,出力はすべての欠損していない要素に対して必要な最小の幅になるように先頭がゼロで埋められる.

as.hexmodeは整数(型が "integer"か "double")と要素が 0-9, a-f, A-F (又は NA)だけを含む文字列をクラス "hexmode"に変換できる.

メソッド !, |, &そして xorが存在する:これらはその引数を最長の長さまでリサイクルし,それから各要素にビットごとに適用される.

See Also

整数を16進数に変換する他のオプションについては octmode, sprintf, 16進文字列を整数に変換するには strtoi.

Page 252: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

252 Hyperbolic

Examples

i <- as.hexmode("7fffffff")i; class(i)identical(as.integer(i), .Machine$integer.max)

hm <- as.hexmode(c(NA, 1)); hmas.integer(hm)

Hyperbolic Hyperbolic Functions

Description

これらの関数はよく知られた双曲線関数を与える.これらは順に hyperbolic cosine, sine,tangentそしてそれらの逆関数 arc-cosine, arc-sine, arc-tangent (または ‘area cosine’,等).

Usage

cosh(x)sinh(x)tanh(x)acosh(x)asinh(x)atanh(x)

Arguments

x 数値もしくは複素数値ベクトル

Details

これらは内部総称的なプリミティブ関数である:それらに対するメソッドを個別に,もしくは Mathグループ総称経由で定義できる.

ブランチのカットは逆三角関数 asin等と両立し,Abramowitz and Stegun, figure 4.7, page86で定義されているものと一致する.このカット上の実際の挙動は C99標準に従い,逆時計回りに端点を連続に廻ることを要求する.

S4メソッド

全ては S4総称的関数である:それらに対するメソッドを個別に,もしくは Mathグループ総称経由で定義できる.

References

Abramowitz, M. and Stegun, I. A. (1972) Handbook of Mathematical Functions. New York: Dover.Chapter 4. Elementary Transcendental Functions: Logarithmic, Exponential, Circular and Hyper-bolic Functions

See Also

三角関数 cos, sin, tan,そしてそれらの逆関数 acos, asin, atan.

ロジスティック分布関数 plogisは数値 xに対する tanh()のシフト版である.

Page 253: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

iconv 253

iconv Convert Character Vector between Encodings

Description

これは文字列ベクトルをエンコーディング間で変換するためにシステムの機能を使う:‘i’は ‘internationalization’を意味する.

Usage

iconv(x, from = "", to = "", sub = NA, mark = TRUE, toRaw = FALSE)

iconvlist()

Arguments

x 文字列ベクトル,又は as.characterで文字列ベクトルに変換されるオブジェクト,又は iconv(toRaw = TRUE)で返されるような NULLと raw要素を持つリスト.

from 現在のエンコーディングを記述する文字列.

to 目標のエンコーディングを記述する文字列.

sub 文字列.もし NAでなければ入力中の変換不能なバイトを置き換えるのに使われる.(これは普通単一の文字であるが,それ以上でも良い.)もし "byte"はバイトの16進数コードである "<xx>"を意味する.

mark 論理値.熟練者用.エンコーディングはマークすべきか?

toRaw 論理値.文字列ベクトルではなくバイトベクトルのリストを返すべきか?

Details

エンコーディングの名前と何が利用できるかはプラットフォーム依存である.すべてのRのプラットフォームは "" (現在のロケールのエンコーディングに対して), "latin1"そして "UTF-8"をサポートする.エンコーディングを指定する際は一般に大・小文字の区別は無視される.

殆どのプラットフォームでは iconvlistがサポートされるエンコーディングのアルファベット順のリストを提供する.他では情報は iconv(5)のマンページかマンページのどこかにある(しかしシステム命令 iconvは Rが呼び出す C関数と同じエンコーディングのセットをサポートしないかもしれないことを注意する).不幸にも名前はすべてのプラットフォームを跨ってサポートされていることは稀である.

返還できない xの要素(恐らくそれらが不正であるか目標のエンコーディングでは表示できないので)は subが指定されていない限り NAとして返される.

iconvの殆どのバージョンは toエンコーディングに ‘//TRANSLIT’を付け加えることで字訳を許す:例を見よ.

エンコーディング "ASCII"は受け入れられる.殆どのシステムで "C"と "POSIX"はASCIIの同義語である.

xの要素のすべてのエンコーディングビット(Encodingを見よ)は無視される:それらはそれ以外と宣言されていてもあたかもエンコーディング fromからのエンコーディングで

Page 254: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

254 iconv

あるかのように翻訳される. enc2nativeと enc2utf8は宣言されたエンコーディングを考慮する別法である.

iconvの実装は典型的には正当性のチェックをあまりせず,エンコーディング fromで正当な入力をしばしば誤変換する.

Value

もし toRaw = FALSE (既定)ならば,値は(文字列ベクトルへの変換後の) xと同じ長さと属性を持つ文字列ベクトルである.

もし mark = TRUE (既定)ならば結果の要素は,もし toが "latin1"か "UTF-8",又はもしto = ""で現在のロケールのエンコーディングが Latin-1 (又はWindowsではその上位集合である CP1252)又は UTF-8であれば,宣言されたエンコーディングを持つ.

もし toRaw = TRUE ならば,値は(文字列ベクトルへの変換後の) x と同じ長さと属性を持つ文字列ベクトルで,その要素は NULL (もし変換が失敗すれば)かバイトベクトルである.

iconvlist()に対しては文字列ベクトル(典型的には数百の要素を持つ)である.

実装の詳細

使用されている iconvの三つの主要な移植がある. Linuxの Cランタイム ‘glibc’は一つを含む.OS X, FreeBSD そして Cygwin を含む幾つかのプラットフォームは GNU の‘libiconv’ を提供し,追加のエンコーディングを持つこともある.我々は Windows では Yukihiro Nakadaira 作の ‘win_iconv’ を使っている.これは Windows の codepage に基づいている. (我々は他のシステムとの互換性のため多くのエンコーディング名を加えた.)これら三つは iconvlistを持ち,エンコーディング名の大・小文字を無視しそして ‘//TRANSLIT’ をサポートする(しかし異なる結果を持ち, ‘win_iconv’ に対してはto = "ASCII"を除き ‘best fit’戦略が使われている).

多くの商用 Unixは iconvの実装をもつが,我々が必要とするエンコーディング名をサポートするものは一つもない:例えば “R Installation and Administration Manual”は SolarisとAIXでは GNUの ‘libiconv’のインストールを推奨している.

他の移植もある.例えば NetBSD は Citrus プロジェクトからのものを使ってきている.これは ‘//TRANSLIT’をサポートせずより古い FreeBSDポートがある(そこでは ‘libiconv’が普通使われる):これらが Rで動作するかどうかは報告が無い.

不正な入力が検出されることを信じるべきではない.特に to = "ASCII"に対しては,ある種の移植は 8ビット文字を許しそれを未変更又は字訳して渡す.

ある種の移植は興味深い追加のエンコーディングを持つ:例えば GNUの ‘libiconv’は非アスキー文字に対する \uxxxエスケープを使う to = "C99"を許す.

バイトオーダーマーク

最も普通には ‘BOM’として知られている.

サイズで1バイト以上の文字単位を使うエンコーディングはファイルに big-endian かlittle-endian 順序で書き込むことが出来る:これは最も普通には UCS-2, UTF-16 そしてUTF-32/UCS-4エンコーディングに適用される.ある種のシステムは Unicode文字 U+FEFFをそのエンコーディングのファイルの先頭に書き込む.恐らく UTF-8でも同様である.こうした使用法では文字は BOMとして知られており,入力の間そのように処理されるべきである (connectionの‘エンコーディング’節を見よ:再エンコーディングされたコネクションは幾つかの BMOの特殊な処理を持つ).この節の残りはこれがされておらず xが BMOで始まる場合に適用される.

Page 255: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

iconv 255

実装は一般に与えられた fromに対する BMOを "UCS-2", "UTF-16"そして "UTF-32"のどれかと解釈する.実装は x中の BMOを他のエンコーディングでどのように扱うかの点で異なる:それらは捨て去られるかもしれず,文字 U+FEFFとして返されるかもしれず,不正とされるかもしれない.

Note

普通 ‘Latin 9’として知られている ISO 8859-15エンコーディングの可搬性のある唯一の合理的な名前は "latin-9"である:ある種のプラットフォームは "latin9"をサポートするが GNUの ‘libiconv’はしない.

エンコード名 "utf8", "mac" そして "macroman" は可搬性が無い.from と to に対する"utf8"は iconvにより "UTF-8"に変換される(R 3.0.3以来)が,例えば fileEncoding引数ではそうではない."macintosh"は ‘Mac Roman’に対する公式(そして最も広範にサポートされている)名前である(https://en.wikipedia.org/wiki/Mac_OS_Roman).

See Also

localeToCharset, file.

Examples

## 原則的には,すべてのシステムが iconvlist を持つわけではないのでtry(utils::head(iconvlist(), n = 50))

## Not run:## Latin-2 から UTF-8 へ変換:glibc iconv の二つの変種.iconv(x, "ISO_8859-2", "UTF-8")iconv(x, "LATIN2", "UTF-8")

## End(Not run)

## 以下の x はどちらも latin1 で,latin1 を表示できる## ロケールでのみ正しく表示できる.x <- "fa\xE7ile"Encoding(x) <- "latin1"xcharToRaw(xx <- iconv(x, "latin1", "UTF-8"))xx

iconv(x, "latin1", "ASCII") # NAiconv(x, "latin1", "ASCII", "?") # "fa?ile"iconv(x, "latin1", "ASCII", "") # "faile"iconv(x, "latin1", "ASCII", "byte") # "fa<e7>ile"

## 古い R のヘルプファイルから取り出す(それらは今では UTF-8 である)x <- c("Ekstr\xf8m", "J\xf6reskog", "bi\xdfchen Z\xfcrcher")Encoding(x) <- "latin1"xtry(iconv(x, "latin1", "ASCII//TRANSLIT")) # プラットフォーム依存iconv(x, "latin1", "ASCII", sub = "byte")## そして Windows の 'Unicode' に対してはstr(xx <- iconv(x, "latin1", "UTF-16LE", toRaw = TRUE))iconv(xx, "UTF-16LE", "UTF-8")

Page 256: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

256 icuSetCollate

icuSetCollate Setup Collation by ICU

Description

ICU (Rの構築の際のオプション部分)が行う照合の仕方を制御する.

Usage

icuSetCollate(...)

icuGetCollate(type = c("actual", "valid"))

Arguments

... 名前付き引数,‘詳細’を見よ.

type 文字列:簡略化可能.照合に使われる実際のロケールか正当であるべき最も特別なロケール.

Details

オプションで R は ICU を使って文字列を照合するように構築できる (http://site.icu-project.org).そうしたシステムに対しては icuSetCollateを照合の仕方を調節するのに使える.他の構築ではこの関数の呼び出しは何もせず,警告が出る.

可能な引数は

locale: "da_DK"のような文字列で,照合規則を使う言語と国を与える.もし存在すればこれは最初の引数でなければならない.

case_first: "upper", "lower"又は "default"で,大文字か小文字を最初にソートすることを要求する.既定では普通小文字が最初であるが,あらゆる国でそうとは限らない (例えばデンマーク語の既定ではそうではない).

alternate_handling: ‘変数’文字(主に句読点とシンボル)の処理を制御する.可能な値は"non_ignorable" (第一強度)と "shifted" (第四強度).

strength: どの成分を使うべきか? 可能な値は "primary", "secondary", "tertiary" (既定), "quaternary"そして "identical".

french_collation: フランスロケールではアクセントが照合に及ぼす影響は右から左であるが,ほとんどの他のロケールではそれは左から右である.可能な値は "on","off"そして "default".

normalization: 文字列は正規化されるべきか?可能な値は "on"と "off" (既定値).これは複合文字の照合に影響する.

case_level: 二番目と三番目の間の追加レベルで,大小の日本語の仮名文字を区別するのに使われる.可能な値は "on"と "off" (既定値).

hiragana_quaternary: 可能な値は "on" (平仮名を第三レベルで最初にソート)と "off".

照合の詳細な理解があるか特殊な要求を除けば,最初の三つが恐らく興味があるであろう.

localeには幾つかの特殊な値が受け入れられる:

Page 257: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

icuSetCollate 257

"none": ICUを照合に使わない:代わりに OSの照合サービスが使われる.(R 3.1.2. から)

"ASCII": ICUを照合に使わない:代わりに C関数 strcmpが使われる.これは(符号無しの)数値順序でバイトごとにソートする.(R 3.1.3. から)

"default": セッションの最初になされるように OSからロケールを得る.もし環境変数R_ICU_LOCALEが空でない値に設定されていれば, OSのサービスを使う代わりにその値が用いられる.

"", "root": ‘root’ 照合: http://www.unicode.org/reports/tr35/tr35-collation.html#Root_Collationを見よ.

現実の ICUロケールの指定については http://userguide.icu-project.org/localeを見よ.ICUはあるロケールがサポートされていることを報告せず,それが‘最適’と考えるものに戻る (これはかなり相違する可能性があり icuGetCollate("actual") で報告される,しばしば "root"である).殆どの英語のロケールは "root"に戻る.なぜなら,例えば "en_GB"は適正なロケールであるが,照合に関する特別な規則を持たないためである."C"はサポートされている ICUロケールではないことを注意する.

例としては case_level = "on", strength = "primary"はアクセントの違いを無視し,alternate_handling = "shifted"は空白と句読点を無視する.

もし OSが照合のために Cロケールを使うように設定されていれば,最初 ICUは照合のために使われない.一旦この関数が localeの値と共に呼び出されると,locale = "none"と共に再び呼び出されるまで ICUが使われる.

もし localeが指定されると,すべてのカスタム化は既定値にリセットされる: OSの照合位置カテゴリーが Sys.setlocaleで変更されると,照合エンジンはリセットされる.

Value

icuGetCollateに対しては使用中の ICUロケールを説明する文字列 ("ICU not in use"と報告されるかもしれない). ‘実際’のロケールは要求されるロケールよりも簡単かもしれない:例えば "da_DK"の代わりに "da":英語のロケールは恐らく "root"と報告される.

Note

ICUは利用可能な限り既定で使われる:これは OS X, Solarisそして多くの Linuxに該当する. UTF-8では内部的に動作するので UTF-8ロケールで最も有効である.

Windowsではこれはオプションである:もし Rが ICU付きで構築されると,環境変数R_ICU_LOCALEが設定されるか,一度 icuSetCollateがロケールを選択するために呼び出された時だけ使われる (ICUとWindowsはロケール名に関する意見が違うため).icuSetCollate(locale = "default")は R >= 3.2.0とWindows Vista/Server 2008及びそれ以降でかなり上手く動作するであろう (しかし LC_COLLATE)のような環境変数を無視するシステム既定動作をが見受けられる).

See Also

Comparison, sort.

どこで ICUが得られるかについては capabilities;そのバージョンについては extSoftVersion.

照合に関する ICUのユーザーガイドの章 (http://userguide.icu-project.org/collation).

Page 258: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

258 identical

Examples

## これらは利用できる ICU とロケールに依存する.## 現在の設定が分からないので既定値にリセットするしか無い.if(capabilities("ICU")) {

print(icuGetCollate())print(icuGetCollate("valid"))x <- c("Aarhus", "aarhus", "safe", "test", "Zoo")print(sort(x))icuSetCollate(case_first = "upper"); print(sort(x))icuSetCollate(case_first = "lower"); print(sort(x))

## デンマークの照合で大文字が最初で 'aa' は単一の文字icuSetCollate(locale = "da_DK", case_first = "default"); print(sort(x))## エストニア語では Z を S と T の間に置くicuSetCollate(locale = "et_EE"); print(sort(x))icuSetCollate(locale = "default"); print(icuGetCollate("valid"))

}

identical Test Objects for Exact Equality

Description

二つのオブジェクトが正確に等しいかどうかを検査する安全で信頼できる方法.等しい場合 TRUEを返し,他のすべてのケースでは FALSEを返す.

Usage

identical(x, y, num.eq = TRUE, single.NA = TRUE, attrib.as.set = TRUE,ignore.bytecode = TRUE, ignore.environment = FALSE)

Arguments

x, y 任意の Rオブジェクト.

num.eq 数(double と complex で NA で無い)は == (‘等号’) を使って比較するか,それともビット毎に比較するかを指示する論理値.後者(非既定値)は-0と +0を区別する.

single.NA 概念的に丁度一つの数値の NAと一つの NaNがあるかどうかを指示する論理値;single.NA = FALSEはビットパターンを区別する.

attrib.as.set xと yの属性が順序が無いタグ付き対リスト (“集合”)と見做すかどうかを指示する論理値;これは現在また S4オブジェクトの slotにも適用される. attrib.as.set = FALSEと置くのはあまりにも厳格かもしれない.

ignore.bytecode

クロージャを比較する際バイトコードが無視されるべきかどうかを指示する論理値.

ignore.environment

クロージャを比較する際それらの環境が無視されるべきかどうかを指示する論理値.

Page 259: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

identical 259

Details

identicalの呼び出しは if文と while文また &&や ||を用いる論理表現式中で正確な同等性をテストする手段である.これらすべての応用では単一の論理値が得られることが保証されなければならない.

ユーザはしばしばこうした状況で ==や !=のような比較演算子を使う.これは自然に見えるが,これはこれらの演算子が Rでデザインされたものではない.これらは引数に似たオブジェクトを返す.もし xと yが同じ長さであることを期待していたが実は一方がそうでなかったとすると,ただ一つの FALSEが得られない.同様に,もし一方の引数がNAならば結果もまた NAになる.どちらのケースでも表現 if(x == y).... は期待したようには動作しない.

関数 all.equalもまたこのような方法で同等性をテストするのに使われるが,しかし少し異なったことを意図している:それは数値的な結果での僅かな違いを認める.

identical中の計算はまた信頼が置け,そして普通速い.それらは決してエラーにならない.identicalを破綻させる既知の唯一の方法は Cレベルで不正なポインターを与えメモリフォールトを起こすことである.それは普通不等性を素早く見出す.二つの大きくて複雑なオブジェクトの同等性のチェックは,もしオブジェクトが等しいかほとんど等しくて完全に独立なコピーを表す場合にはより時間がかかる可能性がある.殆どのアプリケーションに対しては計算コストは無視可能であろう.

既定であるが,もし single.NAが真なら identicalは NaNを NA_real_とは異なると見做すが,すべての NaNは等しい(そして同じ型のすべての NAは等しい).文字列は,もしそれらが異なったマーク付きエンコーディングにあっても UTF-8に翻訳された時に一致すれば同等と見做される.

既定であるが,もし attrib.as.setが真なら属性の比較はそれらを集合として眺める(ベクトルとしてではないので並び方はテストされない).もし ignore.bytecodeが真(既定)ならば,バイトコンパイルされた関数のコード (cmpfunを見よ)は比較では無視される.もしこれが偽ならば,関数はそれらが同じコンパイルコードのコピーである (もしくはどちらもコンパイルされていない)時だけ等しいと比較される.二つの異なったコンパイル結果が等しいかどうかをチェックするためにはdisassemble()の結果を比較すべきであろう.

クラス "POSIXlt"の日付時刻に対して identicalを使いたいとは恐らく思わないであろう:異なったタイムゾーン中の異なった時間が同じ時間を表し得,タイムゾーンが複数の名前をもつだけでなく,成分の幾つかはオプションである.

identical(x, y, FALSE, FALSE, FALSE, FALSE)は正確な同等性を気難しくテストする.

Value

単一の論理値 TRUE 又は FALSE で決して NA にならず,一つ以外の値にも決してならない.

Author(s)

John Chambers and R Core

References

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.

See Also

二つのオブジェクトが如何に異なるかの説明には all.equal;要素ごとの比較を生成する演算子については Comparison. isTRUEは identicalに基づく簡単なラッパである.

Page 260: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

260 identity

Examples

identical(1, NULL) ## FALSE -- これを == を使って試みないことidentical(1, 1.) ## R では TRUE(双方は倍精度実数として保管されている)identical(1, as.integer(1)) ## FALSE, 異なった型で保管されている

x <- 1.0; y <- 0.99999999999## 数値的なぼやけを認めてオブジェクトの同等性をテストするには:(E <- all.equal(x, y))isTRUE(E) # これは単に次を使うことを単純に定義しているidentical(TRUE, E)## もし all.equal がオブジェクトが異なると考えると,それは## 文字列を返し,そして上の表現は FALSE と評価される

## 普通ではない R オブジェクトに対しても:identical(.GlobalEnv, environment())

### ------- 気難しいフラグ : -----------------------------

## 悪名高い例:identical(0., -0.) # TRUE, つまり差が見つけられないidentical(0., -0., num.eq = FALSE)## 同様:identical(NaN, -NaN) # TRUEidentical(NaN, -NaN, single.NA = FALSE) # ビットレベルで差異## 関数に対して:f <- function(x) xfg <- compiler::cmpfun(f)gidentical(f, g)identical(f, g, ignore.bytecode = FALSE)

identity Identity Function

Description

その引数を返すトリビアルな恒等関数.

Usage

identity(x)

Arguments

x Rオブジェクト.

See Also

単位行列を含む対角行列を作るには diag.

Page 261: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

ifelse 261

ifelse Conditional Element Selection

Description

ifelseは testと同じ形の値を返す.それは testの要素が TRUEか FALSEかに応じて要素 yesか noで埋められている.

Usage

ifelse(test, yes, no)

Arguments

test 論理値モードに強制変換できるオブジェクト.

yes testの真の要素に対する返り値.

no testの偽の要素に対する返り値.

Details

もし yesや noが短すぎるとそれらの要素はリサイクルされる. yesは testの要素が真である時,そしてその時だけ評価される. noについても同様である.

test中の欠損値は結果中の欠損値を与える.

Value

xと同じ長さと属性のベクトル(次元と "class"を含む)で,データの値は yesと noから取られる.解答のモードは論理値から先ず xから取られた任意の値,そしてそれから yから取られた任意の値に合わせて強制変換される.

警告

結果のモードは test の値に依存するかもしれない(例を見よ).そして結果のクラス属性(oldClassを見よ)は testから取られ,yesや noから選択された値に対して不適切かもしれない.

可能性として test中の欠損値を処理するように拡張された次のような構成を使うほうが好ましいことがある

(tmp <- yes; tmp[!test] <- no[!test]; tmp)

更に testの結果が単純な真/偽,つまり length(test) == 1,の時はコードif(test) yes else noは相当効率的でありしばしば ifelse(test, yes, no)より好ましい.

References

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

See Also

if.

Page 262: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

262 integer

Examples

x <- c(6:-4)sqrt(x) #- 警告が出るsqrt(ifelse(x >= 0, x, NA)) # 警告なし

## 注意:次もまた警告がでる!ifelse(x >= 0, sqrt(x), NA)

## ifelse() は属性を取り去る## これは日付や因子を扱う時重要になるx <- seq(as.Date("2000-02-29"), as.Date("2004-10-04"), by = "1 month")## 多くの "yyyy-mm-29",しかし閏年に僅かな "yyyy-03-01"y <- ifelse(as.POSIXlt(x)$mday == 29, x, NA)head(y) # 期待されるものではない ... ==> クラス属性を再現する必要:class(y) <- class(x)y## ==> 再び ifelse() を使わないほうが良いケース,しかし## どちらもより効率的でわかりやすい:y2 <- xy2[as.POSIXlt(x)$mday != 29] <- NAstopifnot(identical(y2, y))

## 異なった返り値モードの例:yes <- 1:3no <- pi^(0:3)typeof(ifelse(NA, yes, no)) # 論理値typeof(ifelse(TRUE, yes, no)) # 整数typeof(ifelse(FALSE, yes, no)) # 倍精度実数

integer Integer Vectors

Description

"integer"型のオブジェクトを作る,検査する.

Usage

integer(length = 0)as.integer(x, ...)is.integer(x)

Arguments

length 希望する長さを与える非負整数.倍精度実数値は整数に変換される:長さが1以外の引数を与えるとエラーになる.

x 強制変換又は検査するオブジェクト.

... 他のメソッドに・から渡される追加引数.

Page 263: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

integer 263

Details

整数ベクトルはデータがそれらを期待する Cや Fortranコードに渡せるように存在する.従って(小さな)整数データは正確かつコンパクトに表現できる.

現在の Rの実装は整数ベクトルのために 32ビット整数を使うため,表現可能な整数は約 ±2× 109に制限される: doubleはもっと大きな整数を正確に表現できる.

Value

integerは指定された長さの整数ベクトルを作る.ベクトルの各要素は 0に等しい.

as.integerはその引数を整数型に変換しようと試みる.回答は変換が成功しない限り NAになる.絶対値で最大整数より大きな実数値は NAに変換される(同じ符号の最大整数を与える Sとは異なり).整数でない数値はゼロに向かって切り詰められる (つまりそこでは as.integer(x)は trunc(x)に等しい).そして複素数の虚部は(警告付きで)捨て去られる.オプションで(0x or 0Xで始まる)10進法表現や16進数表現が後に続く空白を含む文字列は,実数に対してプラットフォームが変換できるようなものと並んで,変換可能である.as.vectorと同様にこれは名前を含む属性を剥ぎ取る.(オブジェクト xが属性を失うこと無く整数型であることを保証するには storage.mode(x) <- "integer"を使う.)

is.integerはその引数が整数型か否かに応じて TRUEか FALSEを返すが,それが因子であれば FALSEを返す.

Note

is.integer(x)は xが整数を含むかどうかを検査しない!そのためには roundを使った例の中の is.wholenumber(x)関数のようにする.

References

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

See Also

numeric, storage.mode.

整数値への変換は round (そして ceilingと floorのヘルプページ).

Examples

## as.integer() は切り捨てる:x <- pi * c(-1:1, 10)as.integer(x)

is.integer(1) # FALSE になる!

is.wholenumber <-function(x, tol = .Machine$double.eps^0.5) abs(x - round(x)) < tol

is.wholenumber(1) # TRUE である(x <- seq(1, 5, by = 0.5) )is.wholenumber( x ) #--> TRUE FALSE TRUE ...

Page 264: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

264 interaction

interaction Compute Factor Interactions

Description

interactionは与えられた因子の交互作用を表す因子を計算する. interactionの結果は常に順序付きではない.

Usage

interaction(..., drop = FALSE, sep = ".", lex.order = FALSE)

Arguments

... その交互作用を計算すべき因子,またはこれらの因子を与える単一のリスト.

drop もし dropが TRUEなら,未使用の水準は結果から取り除かれる.既定ではすべての因子水準を保存する.

sep 構成要素を結合して新しい水準を構成する文字列.

lex.order 論理値で,因子の結合の順序が辞書式でなされるべきかどうかを指示する.

Value

与えられた因子の交互作用を表す因子.水準は個別の因子の水準を sep,既定値は .,で連結したラベルを持つ.

既定では,lex.order = FALSEの時は水準は最初の因子の水準が最も速く動き,二番目がそれに続き,等と順序付けられている.これは辞書式順序(lex.order = TRUEで得られる)の逆であり, : と異なる.(これは Sとの互換性ためそうされている.)

References

Chambers, J. M. and Hastie, T. J. (1992) Statistical Models in S. Wadsworth & Brooks/Cole.

See Also

factor; :,ここで f:gは fと gが因子の時の interaction(f, g, sep = ":")に類似している.

Examples

a <- gl(2, 4, 8)b <- gl(2, 2, 8, labels = c("ctrl", "treat"))s <- gl(2, 1, 8, labels = c("M", "F"))interaction(a, b)interaction(a, b, s, sep = ":")stopifnot(identical(a:s,

interaction(a, s, sep = ":", lex.order = TRUE)),identical(a:s:b,

interaction(a, s, b, sep = ":", lex.order = TRUE)))

Page 265: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

interactive 265

interactive Is R Running Interactively?

Description

Rが対話的に使われている時 TRUEを返し,さもなければ FALSEを返す.

Usage

interactive()

Details

対話的な Rセッションとは対話的に操作する人間がいることを想定したものである.従って例えば Rは不正確な入力を修正したり,もしそれが OKならば次のプロットに移動したりするように促す.

GUIコンソールは対話的なセッションで Rを開始するように手配する. Rがターミナルで稼働していれば(Windowsでは Rterm.exe経由で),それはもし ‘stdin’が(擬似)ターミナルに接続しており,そして ‘stdin’がファイルやパイプにリダイレクトされていなければ対話的と仮定する.コマンドラインのオプション ‘--interactive’ (Unix)と ‘--ess’(Windows, Rterm.exe)は既定の仮定を上書きする. (Unix風システムではコマンドラインのエディター readlineが使われているかどうかは ‘--interactive’によって上書きされない.)

Rの埋め込み使用はセッションを対話的にもそうでないようにも設定できる.

内部的にはセッションが対話的かどうかは以下を決める

• ある種のエラーをどのように処理し報告するか,例えば stopと options("showWarnCalls")を見よ.

• ‘--save’, ‘--no-save’又は ‘--vanilla’の一つが必要とされ,そして Rが作業空間を保存するかどうか尋ねるか.

• 必要な際,又は dev.newによって起動される既定グラッフィックスデバイスの選択:options("device")を見よ.

• グラッフィックスデバイスが新しいページの確認を尋ねるか.

加えて R自体の Rコードは interactive()を使用する:例えば example help, debuggerそして install.packagesがそうである.

Note

これはプリミティブな関数である.

See Also

source, .First

Examples

.First <- function() if(interactive()) x11()

Page 266: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

266 InternalMethods

Internal Call an Internal Function

Description

.Internalは Rインタプリタに構築時に組み込まれる内部コードへの呼び出しを行う.真の Rウィザードだけがこの関数を使うべきで, R開発者だけが内部関数のリストを加えることが出来る.

Usage

.Internal(call)

Arguments

call 呼び出し表現

See Also

.Primitive, .External (ユーザが使える最も類似の同値物).

InternalMethods Internal Generic Functions

Description

多くの Rの内部関数は総称的であり,それらに対しメソッドを書くことが出来る.

Details

以下のプリミティブな内部関数は総称的である,つまりそれらに対し methodsを書くことが出来る:

[, [[, $, [<-, [[<-, $<-,

length, length<-, dimnames, dimnames<-, dim, dim<-, names, names<-, levels<-,

as.character, as.complex, as.double, as.integer, as.logical, as.raw, as.vector, is.array,is.matrix, is.na, is.nan, is.numeric, rep, seq.int (これは "seq"に対するメソッドを選択適用する)そして xtfrm.

加えて,is.nameは is.symbolの同義語であり,後者に対してメソッドを選択適用する.

すべてのグループ総称的な関数もまた内部/プリミティブであり,それらに対するメソッドを書くことが出来る.

.S3PrimitiveGenericsは内部総称的であるがグループ総称的でないプリミティブ関数を総覧する文字列ベクトルである.現在の所 as.vector, cbind, rbindそして unlistが内部総称的である内部非プリミティブな関数である.

効率性のため内部的な選択適用はオブジェクトに対してだけ起こる.つまり is.objectが真となるものである.

See Also

利用可能なメソッドについては methods.

Page 267: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

invisible 267

invisible Change the Print Mode to Invisible

Description

オブジェクトの(一時的)不可視のコピーを返す.

Usage

invisible(x)

Arguments

x 任意の Rオブジェクト.

Details

この関数は関数が付値出来る返り値を持つようにしたいが,付値されない時はプリントしたくない場合に役に立つ.

これはプリミティブな関数である.

References

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

See Also

withVisible, return, function.

Examples

# 次の関数はどちらもその引数を返すf1 <- function(x) xf2 <- function(x) invisible(x)f1(1) # プリントされるf2(1) # されない

is.finite Finite, Infinite and NaN Numbers

Description

is.finiteと is.infiniteはどの要素が有限(無限でなく欠損もしていない)か無限かを指示する xと同じ長さのベクトルを返す.

Infと -Infは正負の無限であり, NaNは‘非数’を意味する.(これらは数値と複素数の実部と虚部に適用されるが整数には適用されない.) Infと NaNは R言語の予約語である.

Page 268: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

268 is.finite

Usage

is.finite(x)is.infinite(x)is.nan(x)

InfNaN

Arguments

x 検査される Rオブジェクト:既定のメソッドは原子的なベクトルを処理する.

Details

is.finiteは xと同じ長さのベクトルを返す.その j番目の要素はもし x[j]が有限(つまり NA, NaN, Infもしくは -Infでない)であれば TRUEで,さもなければ FALSEである.複素数はもし実部と虚部の双方が有限ならば有限とされる.

is.infiniteは xと同じ長さのベクトルを返す.その j番目の要素はもし x[j]が無限(つまり Infもしくは -Inf)であれば TRUEで,さもなければ FALSEである.複素数はもし実部と虚部のどちらかが無限ならば無限とされる.

is.nan は数値が NaN かどうかを検査する.システムは典型的には多くの異なった NaN値を持つため, NaNとの等号比較はしてはならず,identicalも使うべきではない.これらの一つは数値的な欠損値 NAとして使われ,is.nanはそうした値に対して偽になる.複素数はもし実部と虚部のどちらかが NaNであるが NAでない時 NaNと見做される.すべての論理値,整数,そしてバイトベクトルは NaNではないと考えられる.

これらの三つの関数は入力として NULLを受け入れ長さゼロのベクトルを返す.既定のメソッドは文字列とバイトベクトルを受け入れ,そしてすべての項目に対し FALSEを返す.Rのバージョン 2.14.0以前ではこれらはすべての入力を受け入れ,ほとんどの数値でない値に対し FALSEを返した;原子的なベクトルではないケースに対しては現在はエラーとなる.

三つの関数は総称的である:特殊なオブジェクトを処理するメソッドを書くことが出来る,InternalMethodsを見よ.

Value

xと同じ長さの論理値ベクトル:属性 dim, dimnamesそして namesは保存される.

Note

Rではすべての数学値関数(基本的な算術を含み)は入力や出力に対し基本的に +/- Infと NaNを適切に処理すると考えられている.

基本的な規則は Infを伴う呼び出しと関係は,実際は適切な数学的極限を伴う文であるべきということである.

NaNを含む計算は NaNかもしかすると NAを返す:どちらになるかは保証されず Rプラットフォームに依存する(コンパイラーが計算を再要求するかもしれないので).

Page 269: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

is.function 269

References

IEC 60559標準, ANSI/IEEE 754浮動少数点標準としても知られている.

https://en.wikipedia.org/wiki/NaN.

D. Goldberg (1991) What Every Computer Scientist Should Know about Floating-Point ArithmeticACM Computing Surveys, 23(1).Postscript版が次で得られる http://www.validlab.com/goldberg/paper.ps.拡張 PDF版は http://www.validlab.com/goldberg/paper.pdfにある.

C99関数 isfiniteが is.finiteに対して使われている.

See Also

NA, ‘非数(Not A Number)’は同様に数ではないが,普通欠損値として使われ,単に数値と複素数値だけでなく,多くのモードに適用される.

Arithmetic, double.

Examples

pi / 0 ## = Inf ゼロで割った非ゼロ数は無限を作り出す0 / 0 ## = NaN

1/0 + 1/0 # Inf1/0 - 1/0 # NaN

stopifnot(1/0 == Inf,1/Inf == 0

)sin(Inf)cos(Inf)tan(Inf)

is.function Is an Object of Type (Primitive) Function?

Description

その引数が(プリミティブな)関数であるかどうかを検査する.

Usage

is.function(x)is.primitive(x)

Arguments

x Rオブジェクト.

Details

is.primitive(x)は xがプリミティブな関数かどうか (typeofに解説されているような"builtin"か "special")を検査する.これはプリミティブな関数である.

Page 270: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

270 is.language

Value

xが(プリミティブな)関数ならば TRUEで,さもなければ FALSE.

Examples

is.function(1) # FALSEis.function(is.primitive) # TRUE: これは関数であるが,しかし ..is.primitive(is.primitive) # FALSE:これはプリミティブな関数ではない,がしかしis.primitive(is.function) # TRUE: これはそうである

is.language Is an Object a Language Object?

Description

is.languageはもし xが変数の name, call,又は expressionならば TRUEを返す.

Usage

is.language(x)

Arguments

x 検査されるオブジェクト.

Note

これはプリミティブな関数である.

References

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

Examples

ll <- list(a = expression(x^2 - 2*x + 1), b = as.name("Jim"),c = as.expression(exp(1)), d = call("sin", pi))

sapply(ll, typeof)sapply(ll, mode)stopifnot(sapply(ll, is.language))

Page 271: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

is.object 271

is.object Is an Object ‘internally classed’?

Description

むしろ内部的使用のための関数である.これはもしオブジェクト xに Rの内部 OBJECTビットが設定されていれば TRUEを返し,さもなければ FALSEを返す.OBJECTビットは"class"属性が加えられると設定され,属性が除かれると除かれる.従ってオブジェクトがクラス属性を持つかどうかをチェックする非常に効率的な方法である. (S4オブジェクトは常に持つべきである.)

Usage

is.object(x)

Arguments

x 検査すべきオブジェクト.

Note

これはプリミティブな関数である.

See Also

classと methods.

isS4.

Examples

is.object(1) # FALSEis.object(as.factor(1:3)) # TRUE

is.R Are we using R, rather than S?

Description

Rの下で実行されていることを検査する.

Usage

is.R()

Page 272: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

272 is.recursive

Details

この関数は R, Sそして S-PLUSのすべてのバージョンで正しく動作するように書かれている. Rと S-PLUS 8.0以前の Sの方言の双方でコードが実行可能であるためには,コードは is.Rを定義するか,又は以下のようにそれを使わなければならない

if (exists("is.R") && is.function(is.R) && is.R()) {## R固有のコード} else {##コードの Sバージョン}

Value

is.Rは Rを使っていれば TRUEを返し,さもなければ FALSEを返す.

See Also

R.version, system.

Examples

x <- stats::runif(20); small <- x < 0.4## R の初期には 'which()' は R にだけ存在した:if(is.R()) which(small) else seq(along = small)[small]

is.recursive Is an Object Atomic or Recursive?

Description

is.atomic は x が原子的な型 (もしくは NULL)ならば TRUE を,さもなければ FALSE を返す.

is.recursiveは xが再帰的 (リスト風)な構造を持てば TRUEを,さもなければ FALSEを返す.

Usage

is.atomic(x)is.recursive(x)

Arguments

x 検査されるオブジェクト.

Details

is.atomicは原子的な型 ("logical", "integer", "numeric", "complex", "character"そして "raw")と NULLに対して真となる.

殆どのオブジェクトの型は再帰的と見做される.例外は原子的な型, NULL,シンボル(as.nameが与えるような),スロットを持つ S4オブジェクト,そして—Rからは稀にしか見えることのない—弱参照とバイトコードである,typeofを見よ.

Page 273: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

is.single 273

原子的な型を‘原子的ベクトル’と呼ぶのは普通であるが, is.vectorは更に制限を加える:オブジェクトは原子的であるがベクトルではない(その意味で)ことがあり得る.

これらはプリミティブな関数である.

References

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

See Also

is.list, is.language等,そして demo("is.things").

Examples

require(stats)

is.a.r <- function(x) c(is.atomic(x), is.recursive(x))

is.a.r(c(a = 1, b = 3)) # TRUE FALSEis.a.r(list()) # FALSE TRUE - リストはリストis.a.r(list(2)) # FALSE TRUEis.a.r(lm) # FALSE TRUEis.a.r(y ~ x) # FALSE TRUEis.a.r(expression(x+1)) # FALSE TRUEis.a.r(quote(exp)) # FALSE FALSE

is.single Is an Object of Single Precision Type?

Description

is.singleはエラーを報告する.Rには単精度値は無い.

Usage

is.single(x)

Arguments

x 検査すべきオブジェクト.

References

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

Page 274: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

274 ISOdatetime

is.unsorted Test if an Object is Not Sorted

Description

オブジェクトが(増加順に)ソートされていないことを,それをソートする手間をかけずに,検査する.

Usage

is.unsorted(x, na.rm = FALSE, strictly = FALSE)

Arguments

x クラスを持つ Rオブジェクト,数値,複素数値,文字列,論理値,又はバイトベクトル.

na.rm 論理値.チェック前に欠損値を取り除くか?

strictly 値が狭義に増加しているかどうかをチェックすることを指示する論理値.

Value

長さ1の論理値.長さ0か1のすべてのオブジェクトはソートされている.さもなければ結果は原子的なベクトルと S3クラスのオブジェクトを除いて NAになる(ここで the >=か >メソッドが 2:length(x)中の iに対して x[i]と x[i-1]を比較するのに使われる,又はis.unsorted()に対するメソッドが提供されている S4クラス).

Note

この関数は上で説明されているように一次元の添字を持つオブジェクトに対してデザインされている.データフレーム,行列又は他の配列は驚くような結果を与えるかもしれない.

バイトベクトルに対するサポートは R 3.1.0で付け加えられた.

See Also

sort, order.

ISOdatetime Date-time Conversion Functions from Numeric Representations

Description

数値表現から日付・時刻を求める便利なラッパ関数.

Usage

ISOdatetime(year, month, day, hour, min, sec, tz = "")ISOdate(year, month, day, hour = 12, min = 0, sec = 0, tz = "GMT")

Page 275: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

isS4 275

Arguments

year, month, day

ある一日を指定する数値.

hour, min, sec 一日のうちの時間を指定する数値.分数秒も可.

tz 変換に使われる time zone指定. ""は現在のた言うゾーンで "GMT"はUTC.不正な値は最も普通に UTCとして扱われ,プラットホームによっては警告が出る.

Details

ISOdatetime と ISOdate は既定動作だけが異なる strptime の便利なラッパである.ISOdateはタイムゾーンとして UTCを設定する.時刻のない日付に対しては普通 "Date"クラスを使うほうが好ましい.

主引数は通例のリサイクル規則を使いリサイクルされる.

これらは strptimeを使うため,範囲 0:9999の年だけが認められる.

Value

クラス "POSIXct"のオブジェクト.

See Also

日付・時刻クラスの詳細は DateTimeClasses;文字列からの変換は strptime.

isS4 Test for an S4 object

Description

オブジェクトが S4クラスのインスタンスかどうかを検査する.

Usage

isS4(object)

asS4(object, flag = TRUE, complete = TRUE)asS3(object, flag = TRUE, complete = TRUE)

Arguments

object 任意の Rオブジェクト.

flag オプションの論理値:変換の方向を指示する.

complete オプションの論理値:S3への変換が完了しているか.普通は不要であるが,詳細の節を見よ.

Page 276: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

276 isSymmetric

Details

isS4は methodsパッケージに依拠していない.従って特にそのパッケージを requireする必要があるかどうかを検出するために使える.

asS3は completeの値を objectを含意された S3オブジェクトの適正なオブジェクトに変換する試みがされたかどうかを制御する.もし completeが TRUEならば S3クラスを拡張した S4クラスからのオブジェクトは対応する S3クラスを持つ S3オブジェクトに変換される(S3Partを見よ).これは擬似クラス arrayと matrixを拡張するクラスを含む:そうしたオブジェクトは NULLに設定されたクラス属性を持つ.

isS4はプリミティブである.

Value

isS4は S4オブジェクトをマークする内部的なフラグがそのオブジェクトに対してオンにされているかどうかで常に TRUEか FALSEを返す.

asS4 と asS3 はこのフラグをオン・オフし, asS3 はもし存在すればオブジェクト.S3Class スロットからクラスを設定する.asS3 は適正な変換が無い限りオブジェクトを S3オブジェクトに変換しないことを注意しよう:つまり completeが FALSEで無い限り,それに対して S4オブジェクトが拡張であるような "S4"以外のタイプのオブジェクト.

See Also

より一般的なテストは is.object:S4に対する一般的な情報はMethods.

Examples

isS4(pi) # FALSEisS4(getClass("MethodDefinition")) # TRUE

isSymmetric Test if a Matrix or other Object is Symmetric

Description

object が対称かどうかを検査する総称的関数.現在行列メソッドだけが実装されている.

Usage

isSymmetric(object, ...)## S3 method for class 'matrix'isSymmetric(object, tol = 100 * .Machine$double.eps, ...)

Arguments

object 任意の Rオブジェクト:行列メソッドには matrix.

tol 数値スカラー >= 0. 僅かな差異は考慮しない, all.equal.numericを見よ.

... メソッドに渡される追加引数;行列メソッドはこれらを all.equalに渡す.

Page 277: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

jitter 277

Details

matrixメソッドは eigenの中で既定で誤差の範囲内で対称性を検査するために使われall.equalを用いる.これはあらゆる状況で適当では無いかもしれない.

行列 mはその rownamesと colnamesが同じ時だけ対称であることを注意する.unname(m)の使用を考えよう.

Value

objectが対称か否かを示す論理値.

See Also

その symmetric引数が無い時 isSymmetricを呼び出す eigen.

Examples

isSymmetric(D3 <- diag(3)) # -> TRUE

D3[2, 1] <- 1e-100D3isSymmetric(D3) # TRUEisSymmetric(D3, tol = 0) # 許容度ゼロに対して FALSE

jitter ‘Jitter’ (Add Noise) to Numbers

Description

数値ベクトルに少量のノイズを加える.

Usage

jitter(x, factor = 1, amount = NULL)

Arguments

x jitterが加えられる数値ベクトル.

factor 数値.

amount 数値;もし正なら amount として使われる(下を見よ),さもなければ,もし = 0なら既定値は factor * z/50.

既定値(NULL):factor * d/5でここで dは xの値間の約最小の差.

Details

結果,例えば r,は r <- x + runif(n, -a, a)で,ここで n <- length(x)で aは(もし与えられれば) amount引数.

z <- max(x) - min(x) としよう(普通のケースを仮定する).加えられる a は 正の量amountとして与えられるか,さもなければ以下のように zから計算される:

もし amount == 0ならば a <- factor * z/50と置く(Sと同じ).

もし amountが NULL (既定ならば, a <- factor * d/5とされる,ここで dは xのユニーク (無視可能なぼやけを除く)な値の隣接値の最小の差.

Page 278: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

278 kappa

Value

jitter(x, ...) は xと同じ長さの数値ベクトルを返すが,タイを無くすため amountの量のノイズが加わる.

Author(s)

Werner Stahel and Martin Maechler, ETH Zurich

References

Chambers, J. M., Cleveland, W. S., Kleiner, B. and Tukey, P.A. (1983) Graphical Methods for DataAnalysis. Wadsworth; figures 2.8, 4.22, 5.4.

Chambers, J. M. and Hastie, T. J. (1992) Statistical Models in S. Wadsworth & Brooks/Cole.

See Also

jitterと一緒に使いたいかもしれない rug.

Examples

round(jitter(c(rep(1, 3), rep(1.2, 4), rep(3, 3))), 3)## これら二つは S-plus 3.x では失敗する:jitter(rep(0, 7))jitter(rep(10000, 5))

kappa Compute or Estimate the Condition Number of a Matrix

Description

正規(正方)行列の条件数は行列のノルムとその(一般化)逆行列のノルムの積であり.従って行列ノルムの種類に依存する.

kappa()は既定では行列か QR分解の R行列の二乗ノルム条件数(の近似値)を計算する.恐らく線形フィットを使う.二乗ノルム条件数は行列のゼロでない最大固有値と最小固有値の比になることが知られている.

rcond()は逆条件数の近似を計算する,詳細を見よ.

Usage

kappa(z, ...)## Default S3 method:kappa(z, exact = FALSE,

norm = NULL, method = c("qr", "direct"), ...)## S3 method for class 'lm'kappa(z, ...)## S3 method for class 'qr'kappa(z, ...)

.kappa_tri(z, exact = FALSE, LINPACK = TRUE, norm = NULL, ...)

rcond(x, norm = c("O","I","1"), triangular = FALSE, ...)

Page 279: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

kappa 279

Arguments

z, x 行列又は qrの結果,もしくは "lm"を継承するクラスからの当てはめ.

exact 論理値.結果は正確であるべきか?norm 文字列,条件数が計算される行列ノルムを指定する. norm を見よ.

rcondに対しては既定値は "O"で絶対値ノルム.(現在唯一の)可能な他の値は最大値ノルムを意味する "I".

method 使われるべきメソッドを指定する部分マッチされた文字列;主に過去との一貫性のため "qr"が既定値.

triangular 論理値.もし真ならば使われる行列は zの下側三角部分.

LINPACK 論理値.もし真ならば z は複素数値ではなく, LINPACK ルーチンdtrco()が呼び出される;さもなければ関連するルーチンが呼び出される.

... 他のメソッドに・から渡される追加引数; kappa.*()に対しては, normが "2"でない時は特に LINPACK.

Details

kappa()に対しては,もし exact = FALSE (既定)ならば二乗ノルム条件数が簡易な近似で推定される.しかしながら(svdを使った)正確な計算も恐らく同じように十分速い.

絶対値ノルムと最大値ノルムを使った条件数は相当速く計算でき,そして rcond()はこうした逆条件数を計算する.標準の Lapackルーチンを使う複素数行列に対しても同様である.

kappaと rcondは部分的に同じ機能への異なったインタフェイスである.

.kappa_triは kappa.qrと kappa.defaultによって呼び出される内部関数である.

基礎にある LAPACKコードからの不成功の結果は正のエラーコードを与えるエラーになる:これらは FORTRANコードの詳細な吟味によってのみ解釈可能である.

Value

条件数 kappaまたは exact = FALSEならば近似値.

Author(s)

デザインは Chambers (1992)に説明されている同名の S関数にインスピレーションを受けた(しかしかなり異なる).

Source

LAPACKルーチン DTRCONと ZTRCONそして LINPACKルーチン DTRCO.

LAPACKと LINPACKは http://www.netlib.org/lapackと http://www.netlib.org/linpackから.それらのガイドは参考文献にある.

References

Anderson. E. and ten others (1999) LAPACK Users’ Guide. Third Edition. SIAM.Available on-line at http://www.netlib.org/lapack/lug/lapack_lug.html.

Chambers, J. M. (1992) Linear models. Chapter 4 of Statistical Models in S eds J. M. Chambersand T. J. Hastie, Wadsworth & Brooks/Cole.

Dongarra, J. J., Bunch, J. R., Moler, C. B. and Stewart, G. W. (1978) LINPACK Users Guide.Philadelphia: SIAM Publications.

Page 280: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

280 kronecker

See Also

norm;特異値分解は svdそして QR分解は qr.

Examples

kappa(x1 <- cbind(1, 1:10)) # 15.71kappa(x1, exact = TRUE) # 13.68kappa(x2 <- cbind(x1, 2:11)) # 高い! [x2 は特異!]

hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }sv9 <- svd(h9 <- hilbert(9))$ dkappa(h9) # かなり高い!kappa(h9, exact = TRUE) == max(sv9) / min(sv9)kappa(h9, exact = TRUE) / kappa(h9) # 0.677 (つまり相対誤差 = 32%)

kronecker Kronecker Products on Arrays

Description

二つの配列 Xと Yの一般化クロネッカー積を計算する.

Usage

kronecker(X, Y, FUN = "*", make.dimnames = FALSE, ...)X %x% Y

Arguments

X ベクトル又は配列.

Y ベクトル又は配列.

FUN 関数;引用化された名前かもしれない.

make.dimnames Xと Yの次元名の積である次元名を提供する.

... FUNに渡されるオプション引数.

Details

もし X と Y が同じ数の次元を持たなければ,小さい方の配列はサイズ1の次元で埋められる.返される配列は X からいっときに一つの要素を取りそしてその項をFUN(x, Y, ...)のように拡大する.

%x%は kroneckerの別名である (ここで FUNは "*"に固定されている).

Value

次元が dim(X) * dim(Y)である配列 A.

Author(s)

Jonathan Rougier

Page 281: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

l10n_info 281

References

Shayle R. Searle (1982) Matrix Algebra Useful for Statistics. John Wiley and Sons.

See Also

kroneckerがその上に構築されている outer.そして普通の行列積は %*%.

Examples

# 単純なスカラー積( M <- matrix(1:6, ncol = 2) )kronecker(4, M)# ブロック対角行列:kronecker(diag(1, 3), M)

# 次元名を要求するfred <- matrix(1:12, 3, 4, dimnames = list(LETTERS[1:3], LETTERS[4:7]))bill <- c("happy" = 100, "sad" = 1000)kronecker(fred, bill, make.dimnames = TRUE)

bill <- outer(bill, c("cat" = 3, "dog" = 4))kronecker(fred, bill, make.dimnames = TRUE)

l10n_info Localization Information

Description

地域化情報を報告する.

Usage

l10n_info()

Value

三つの論理値成分を持つリスト:

MBCS 多バイト文字セットが使用できるか?

UTF-8 これは UTF-8ロケールか?

Latin-1 これは Latin-1ロケールか?

See Also

Sys.getlocale, localeconv

Examples

l10n_info()

Page 282: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

282 lapply

labels Find Labels from Object

Description

例えばプリントやプロットのために適当なラベルのセットをオブジェクトから見つける.総称的関数.

Usage

labels(object, ...)

Arguments

object 任意の Rオブジェクト:総称的関数である.

... 他のメソッドに・から渡される追加引数.

Value

文字列ベクトルかそうしたベクトルのリスト.ベクトルに対しては結果は名前かseq_along(x)で,データフレームか配列に対してはそれは次元名(NULLは seq_len(d[i])に拡大される).

References

Chambers, J. M. and Hastie, T. J. (1992) Statistical Models in S. Wadsworth & Brooks/Cole.

lapply Apply a Function over a List or Vector

Description

lapplyは Xと同じ長さのリストを返す.その各要素は Xの対応する要素に関数 FUNを適用した結果である.

sapplyは lapplyの使いやすいバージョンのラッパである.既定でベクトル,行列を返す.又はもし simplify = "array"なら適切であれば simplify2array()を用いて配列を返す. sapply(x, f, simplify = FALSE, USE.NAMES = FALSE)は lapply(x, f)と同じである.

vapplyは sapplyに似るが,返り値の型が予め指定されているので,より安全に(そして時には速く)使うことが出来る.

replicateは表現式の繰り返し評価に対する sapplyの通常の使用向けのラッパである(普通乱数生成を含む).

simplify2array()は simplifyが偽でない時 sapply()から呼び出されるユーティリティである.同様に mapply()からも呼びだされる.

Page 283: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

lapply 283

Usage

lapply(X, FUN, ...)

sapply(X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)

vapply(X, FUN, FUN.VALUE, ..., USE.NAMES = TRUE)

replicate(n, expr, simplify = "array")

simplify2array(x, higher = TRUE)

Arguments

X ベクトル(原子的かリスト)又は expressionオブジェクト.他のオブジェクト(クラス付きオブジェクトを含む)は base::as.listで強制変換される.

FUN Xの各要素に適用される関数: ‘詳細’を見よ. +, %*%のような関数に対しては関数名は逆引用化か引用化する必要がある.

... FUNに対するオプション引数.

simplify 論理値か文字列:もし可能なら結果をベクトル,行列又は高次元配列に単純化するか? sapplyに対してはこれは名前付きで簡略化できない.既定値の TRUE はもし適当ならばベクトルか行列を返すが,もしsimplify = "array"ならば結果は配列でその“ランク”(=length(dim(.)))はFUN(X[[i]])の結果よりも一つ大きい.

USE.NAMES 論理値;もし TRUEで Xが文字列ならば,既に名前を持たなければ結果に対して Xを namesとして使う.この引数は ... の後に来るのでその名前は簡略化できない.

FUN.VALUE (一般化)ベクトル;FUNからの返り値のテンプレート. ‘詳細’を見よ.

n 整数:繰り返し回数.

expr 繰り返し評価される表現式(言語オブジェクトで,普通呼び出し).

x リスト,典型的に lapply()から返される.

higher 論理値;もし真なら simplify2array() は適切ならば (“高いランクの”)配列を作る.一方 higher = FALSE は行列(又はベクトル)だけを返す.これらの二つのケースは sapply(*, simplify = "array") やsimplify = TRUEにそれぞれ対応する.

Details

FUNは match.funの呼び出しで見つけられ,典型的に関数かシンボル(例えば逆引用化された名前)又は lapplyへの呼び出し環境から探される関数を指定する文字列である.

関数 FUNは入力として Xの任意の要素を受け入れなければならない.もし後者が原子的なベクトルならば,FUNは Xと同じ型の長さ1のベクトルを渡される.

... 中の引数は他の引数と同じ名前を持つことはできない.そして FUNへの部分マッチングを避けるように配慮がいる.一般的に通用するコード中では,もし ... が渡されるのならば最初の二つの引数を Xと FUNと命名するのは良い習慣であり,もし Xや FUNという名前の引数が ... を通じて渡された時に理解しやすいエラーメッセージが与えられることを保証する.

Page 284: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

284 lapply

sapply中の単純化はもし Xがゼロより大きな長さを持ち,またもし Xのすべての要素からの返り値がすべて同じ(正の)長さを持つ時だけ試みられる.もし共通の長さが1であれば結果はベクトルで,1より大きければ列が Xの各要素に対応する行列である.

vapplyでは常に単純化が行われる.この関数は FUNのすべての値価が FUN.VALUEと一貫性,同じ長さと型を持つか,があるかどうかをチェックする. (型は順序 logical < integer< double < complexの範囲内で高くされるかもしれないが,低くされることはない.)

S4クラスの使用は lapplyと vapplyにリストを渡すべきである: as.listを使った内部的な強制変換は基本名前空間中で行われ,ユーザが定義したそれ(例えば,基本関数に対し S4メソッドを定義することにより)ではない.

lapplyと vapplyはプリミティブな関数である.

Value

lapply, sapply(simplify = FALSE)そして replicate(simplify = FALSE)に対してはリスト.

sapply(simplify = TRUE)と replicate(simplify = TRUE)に対しては: もし Xが長さゼロか n = 0なら空リスト.さもなければ Xと同じ長さの原子ベクトルか行列かリスト(replicateに対しては n).もし単純化が起きれば,出力の型は階層 NULL < raw < logical< integer < double < complex < character < list < expressionの中で最高の型 (対リストはリストに変換した後)を持つ返り値から決まる.

vapplyは FUN.VALUEにマッチした型のベクトルか配列を返す.もし length(FUN.VALUE) == 1なら,X と同じ長さのベクトルが返される.さもなければ配列が返される.もしFUN.VALUE が配列でなければ結果は length(FUN.VALUE) 行で length(X) 列の行列であり,さもなければ dim(a) == c(dim(FUN.VALUE), length(X))の配列 aである.

配列の(次元)名前は,もし FUN.VALUEが名前を持てばそれから,さもなければ最初の関数呼び出しの結果から取られる.行列の列名,又はもっと一般に配列値の最後の次元名,もしくはベクトル値の名前は sapply中の Xと同様に設定される.

Note

sapply(*, simplify = FALSE, USE.NAMES = FALSE)は lapply(*)と同値である.

歴史的な理由から lapplyで作られた呼び出しは評価されず,このことに依存したコードが書かれてきた(例えば bquote).これは記録された呼び出しは常に FUN(X[[i]], ...)の形で,i が現在の添字(整数か倍精度実数)で置き換えられている.これは普通問題ではないが,もし FUN が sys.call を使っているか,それが呼び出しを利用しているのがプリミティブな関数の時は問題になる可能性がある.これはプリミティブな関数をラッパを使って呼び出すのがしばしばより安全なことを意味し,従って例えばlapply(ll, function(x) is.numeric(x))が is.numericに対するメソッド選択適用が正しく行われることを保証するために必要とされる.

もし exprが関数呼び出しならば,それがどこで評価されるか,そして特に ... が何を参照しているか,に関する仮定に注意しよう.

関数呼び出しに対する追加の名前付き引数を replicateに対するそれのように渡すことができる: ‘例’を見よ.

References

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

Page 285: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Last.value 285

See Also

関数を複数の引数に適用するには apply, tapply, mapply.そして lapply()の再帰的バージョンは rapply,ある環境中の各項目に関数を適用するには eapply.

Examples

require(stats); require(graphics)

x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE))# リストの各要素のリスト平均を計算lapply(x, mean)# 各リスト要素に体操するメディアンとクォンタイルlapply(x, quantile, probs = 1:3/4)sapply(x, quantile)i39 <- sapply(3:9, seq) # ベクトルのリストsapply(i39, fivenum)vapply(i39, fivenum,

c(Min. = 0, "1st Qu." = 0, Median = 0, "3rd Qu." = 0, Max. = 0))

## sapply(*, "array") -- 人工的な例(v <- structure(10*(5:8), names = LETTERS[1:4]))f2 <- function(x, y) outer(rep(x, length.out = 3), y)(a2 <- sapply(v, f2, y = 2*(1:5), simplify = "array"))a.2 <- vapply(v, f2, outer(1:3, 1:5), y = 2*(1:5))stopifnot(dim(a2) == c(3,5,4), all.equal(a2, a.2),

identical(dimnames(a2), list(NULL,NULL,LETTERS[1:4])))

hist(replicate(100, mean(rexp(10))))

##パラメータと共に replicate() を使う:foo <- function(x = 1, y = 2) c(x, y)# does not work: bar <- function(n, ...) replicate(n, foo(...))bar <- function(n, x) replicate(n, foo(x = x))bar(5, x = 3)

Last.value Value of Last Evaluated Expression

Description

トップレベルの R 表現式の内部的評価値は次の動作(例えばプリント)の前に常に.Last.value (package:base中)保存される.

Usage

.Last.value

Details

トップレベルの付値の値は Sとは異なり .Last.valueに置かれる.

作業空間中の .Last.valueに付値しないこと.これは常に package:base中の同名のオブジェクトを隠蔽する.

Page 286: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

286 length

See Also

eval

Examples

## example() はトップレベルでは動作しないので,## これらは example() からでは上手く動作しないかもしれないが,## ペーストして実行すれば動作する.gamma(1:15) # ある集中的な計算を考える...fac14 <- .Last.value # 結果は保存されている

library("splines") # 不可視返り値.Last.value # 上のlibrary(.) が返したもの

La_version LAPACK Version

Description

使用中の LAPACKのバージョンを返す.

Usage

La_version()

Value

長さ一の文字列ベクトル.

See Also

他のサードパーティ製ソフトウェアについては extSoftVersion.

Examples

La_version()

length Length of an Object

Description

ベクトル(リストを含む)と因子,そしてメソッドが定義されている他の Rオブジェクトの長さを得る・設定する.

Usage

length(x)length(x) <- value

Page 287: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

length 287

Arguments

x Rオブジェクト.置き換えにはベクトルか因子.

value 非負整数か倍精度実数(整数に刈り詰められる).

Details

どちらも総称的関数である:特殊なクラスのオブジェクトを処理するメソッドを書くことが出来る, InternalMethodsを見よ.length<-は因子メソッドを持つ.

置き換え形式はベクトルの長さをリセットするのに使われる.もしベクトルが短くなれば余分の値は捨て去られ,ベクトルの長さが長くなれば NA (バイトベクトルには nul)で新しい長さになるまで埋められる.

どちらもプリミティブな関数である.

Value

lengthに対する既定値メソッドは現在長さ1の非負整数を返す. 231 − 1を超える要素があれば倍精度実数を返す.

ベクトル(リストを含む)と因子に対しては長さは要素の数である.環境に対してはそれは環境中のオブジェクトの数である. NULLは長さ0を持つ.表現式と対リスト (言語オブジェクトとドットリストを含む)に対してはそれは対リストのチェインの長さである,他のすべてのオブジェクト(関数を含む)は長さを持つ:関数のそれは Sとは異なることを注意しよう.

置き換え形式は xのあらゆる属性を取り去るが,名前だけは例外で修正される (必要なら""で拡張される).

警告

パッケージの作者は1以外の長さの結果(Formula)や,倍精度型のベクトルを返す(Matrix)メソッドを書いてきた.整数でない値を返すものすらある(setsの初期バージョン).整数として表現可能な一つの倍精度実数値が返されるときはそれは長さ1の整数ベクトルとして返される.

R 3.0.0から長さは基本 R中で倍精度実数として返される.

References

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

See Also

文字列ベクトル中の文字数を数えるには nchar,リスト中のすべての要素の長さを得るには lengths.

Examples

length(diag(4)) # = 16 (4 x 4)length(options()) # 12 またはそれ以上length(y ~ x1 + x2 + x3) # 3length(expression(x, {y <- x^2; y+2}, x^y)) # 3

## example(warpbreaks) からrequire(stats)

Page 288: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

288 lengths

fm1 <- lm(breaks ~ wool * tension, data = warpbreaks)length(fm1$call) # 3, lm() そして二つの引数.length(formula(fm1)) # 3, ~ lhs rhs

lengths Lengths of List or Vector Elements

Description

リストの各要素や原子的ベクトル(is.atomic)の長さを整数か数値ベクトルとして返す.

Usage

lengths(x, use.names = TRUE)

Arguments

x list,expressionのようなリスト風オブジェクト,又は原子的ベクトル(それに対しては結果は自明).

use.names 結果が xから名前を引き継ぐかどうかを指示する論理値.

Details

この関数は xをループし,その要素の長さを含む一貫したベクトルを返す.実効的にはすべての iに対する length(x[[i]])が呼びだされるので, lengthに関するすべてのメソッドが考慮される.

Value

長さ length(x)の非負整数.例外は 231 − 1を超える要素を持つ長さで,その時は倍精度実数を返す. use.namesが真なら名前は,もしあれば,xに関する名前から取られる.

Note

lengths(x)の存在理由の一つは,sapply(x, length)や類似の lengthへの *apply呼び出しのより効率的なバージョンとして使うことにある.これが lengths(x)が自明であるxが原子的ベクトルのケースを含む理由である.

See Also

任意の Rオブジェクトの長さを得るには length.

Examples

require(stats)## 月別に要約l <- split(airquality$Ozone, airquality$Month)avgOz <- lapply(l, mean, na.rm=TRUE)## 結果をマージairquality$avgOz <- rep(unlist(avgOz, use.names=FALSE), lengths(l))## しかしこの方が安全でわかりやすいが,遅くなる可能性airquality$avgOz <- unsplit(avgOz, airquality$Month)

Page 289: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

levels 289

## 常に真になるべき,長さが32ビットに収まらない場合を除くstopifnot(identical(lengths(l), vapply(l, length, integer(1L))))

## 空のリストは問題ではないx <- list()stopifnot(identical(lengths(x), integer()))

## "リスト風" 表現式も同様:lengths(expression(u, v, 1+ 0:9))

## そして length メソッドを選択適用すべきf <- c(rep(1, 3), rep(2, 6), 3)dates <- split(as.POSIXlt(Sys.time() + 1:10), f)stopifnot(identical(lengths(dates), vapply(dates, length, integer(1L))))

levels Levels Attributes

Description

levelsは変数の水準属性へのアクセスを提供する.最初の形式はその引数の水準の値を返す.二つ目は属性を設定する.

Usage

levels(x)levels(x) <- value

Arguments

x オブジェクト,例えば因子.

value levels(x)に対する適正な値.既定のメソッドに対しては NULLか文字列ベクトル. factorメソッドに対しては長さが少なくとも xの水準数の文字列ベクトル.もしくは水準をどのように改名するかを指示する名前付きリスト.

Details

抽出と置き換え形式は共に総称的でそれらに対して新しいメソッドを書くことが出来る.置き換え関数に対する最も重要なメソッドは因子に対するそれである.

因子置き換えメソッドに対しては value中の NAは水準からその水準を取り除き,その水準を前に持っていた要素は NAで置き換えられる.

因子に対しては水準を levels(x) <- valueで置き換えることは attr(x, "levels") <- valueと同値ではない(そしてより好ましい).

置き換え関数はプリミティブである.

References

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

Page 290: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

290 libcurlVersion

See Also

nlevels, relevel, reorder.

Examples

## 個別の水準を付値x <- gl(2, 4, 8)levels(x)[1] <- "low"levels(x)[2] <- "high"x

## またはグループとしてy <- gl(2, 4, 8)levels(y) <- c("low", "high")y

## 幾つかの水準を連結z <- gl(3, 2, 12)levels(z) <- c("A", "B", "A")z

## 同じ,名前付きリストを使うz <- gl(3, 2, 12)levels(z) <- list(A = c(1,3), B = 2)z

## 水準を次のようにして加えられる:f <- factor(c("a","b"))levels(f) <- c("c", "a", "b")f

f <- factor(c("a","b"))levels(f) <- list(C = "C", A = "a", B = "b")f

libcurlVersion Report Version of libcurl

Description

使用中の libcurlのバージョンを報告する.

Usage

libcurlVersion()

Value

文字列で,使用中の libcurl のバージョンを値に持つ.もしそれがなければ "".もしlibcurlが利用可能なら以下の属性を持つ

ssl_version SSLの実装とバージョンの名前である文字列で, "none"かもしれない.使用されている OpenSSLのバージョンを意図しているが,libcurlのすべての実装が OpenSSLを使っているわけではない—例えば OS Xはその SSL/TLSに対するラッパである "SecureTranspart"を返す.

Page 291: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

libcurlVersion 291

libssh_version libsshのバージョンの名前である文字列で,利用できるかもしれないしできないかもしれない(これは例えば scpと sftpプロトコルに使われる).もし存在すれば "libssh2/1.5.0"のようなものになる.

protocols サポートされるプロトコルの名前の文字列ベクトルで, URLの一部であるときは‘スキーム’としても知られている.

See Also

他のサードパーティ作のソフトウェアのバージョンは extSoftVersion.

libcurlを(オプションとして)使う関数については curlGetHeaders, download.fileそして url.

SSL のバージョンに関するより詳細は http://curl.haxx.se/docs/sslcerts.html とhttp://curl.haxx.se/docs/ssl-compared.html.普通 Rで使われる libcurlは OS Xでは SecureTransport, Windowsでは OpenSSL,そして Unix風システムでは GnuTLS, NSS又は OpenSSLである.(執筆時には Debianベースの Linuxシステムは GnuTLSを,RedHatベーズのそれは NSSを使う.)

Examples

libcurlVersion()

libcurlVersion Report Version of libcurl

Description

Report version of libcurl in use.

Usage

libcurlVersion()

Value

A character string, with value the libcurl version in use or "" if none is. If libcurl is available,has attributes

ssl_version A character string naming the SSL implementation and version, possibly "none".It is intended for the version of OpenSSL used, but not all implementations oflibcurl use OpenSSL — for example OS X reports "SecureTranspart", itswrapper for SSL/TLS.

libssh_version A character string naming the libssh version, which may or may not be avail-able (it is used for e.g. scp and sftp protocols). Where present, something like"libssh2/1.5.0".

protocols A character vector of the names of supported protocols, also known as ‘schemes’when part of a URL.

Page 292: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

292 libPaths

See Also

extSoftVersion for versions of other third-party software.

curlGetHeaders, download.file and url for functions which (optionally) use libcurl.

http://curl.haxx.se/docs/sslcerts.html and http://curl.haxx.se/docs/ssl-compared.html for more details on SSL versions. Normally libcurl used with R uses SecureTransport on OSX, OpenSSL on Windows and GnuTLS, NSS or OpenSSL on Unix-alikes. (At the time of writingDebian-based Linuxen use GnuTLS, RedHat-based ones use NSS.)

Examples

libcurlVersion()

libPaths Search Paths for Packages

Description

.libPathsはその中でパッケージを眺めるライブラリツリーを得る/設定する.

Usage

.libPaths(new)

.Library

.Library.site

Arguments

new Rのライブラリツリーを持つ文字列ベクトル.チルド展開(path.expand)がなされ,もしプラットフォームがサポートすれば,ある要素が *?[のどれかを含めば展開される;Sys.globを見よ.

Details

.Libraryは既定のライブラリである R_HOMEのサブディレクトリ ‘library’の位置を与える文字列である.

.Library.siteはサイトのライブラリの位置を与える(可能性として空の)文字列である.これは既定では R_HOMEのサブディレクトリ ‘site-library’である(存在しないかもしれない).

.libPathsは Rが知っているライブラリツリーを得たり,設定するのに使われる(従ってパッケージを探すときにも).もし引数 new とともに使われると,ライブラリの検索パスは unique(c(new, .Library.site, .Library))中の既存のディレクトリに設定されそしてこれが返される.もし引数がないと現在のアクティブなライブラリツリーが返される.

末尾にスラッシュを持つパス newがどのように扱われるかは OSに依存する. POSIXファイルシステムでは既存のディレクトリは普通末尾にスラッシュを使って指定される:末尾にスラッシュを持つWindowsのファイルパスは不正で,従ってライブラリ検索パスに加えられない.

Page 293: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

libPaths 293

ライブラリ検索パスは起動時に環境変数 R_LIBS (これは Rのライブラリツリーがルートを持つコロンで分離されたディレクトリのリストでなければならない),ついで環境変数R_LIBS_USER中にあるものによって初期化される.その時に存在するものだけが含められる.

既定では R_LIBSは未設定であり,Rのバージョン x.y.z に対しては R_LIBS_USERはホームディレクトリのディレクトリ ‘R/R.version$platform-library/x.y’に設定される(CRANの OS Xビルドでは ‘Library/R/x.y/library’.

.Library.siteは環境変数 R_LIBS_SITE (ライブラリツリーのコロンで分離された空でないリスト)経由で設定できる.

R_LIBS_USERと R_LIBS_SITEは共に起動プロセスの一部分として Rのバージョン固有の情報に対する指示事項の可能な拡張を集めることが出来る.可能な改造指示事項はすべて ‘%’で始まり一つの文字が続く(‘%’を得るには ‘%%’を使う).現在利用できる改造指示事項には次がある:

‘%V’ パッチレベルを含む Rのバージョン数(例えば ‘2.5.0’).

‘%v’ パッチレベルを除いた Rのバージョン数(例えば ‘2.5’).

‘%p’ それ用に Rが構築されたプラットフォーム, R.version$platformの値.

‘%o’ 基礎にあるオペレーティングシステム, R.version$osの値.

‘%a’ Rがそれ用に構築されたアーキテクチャ(CPU), R.version$archの値.

(Rのバージョン情報の詳細は versionを見よ.)

関数 .libPathsは常に基礎名前空間中の .Libraryと .Library.siteの値を使う.サイトにより .Library.site は ‘Rprofile.site’ 中に設定できる.更新値を利用するにはこれは .libPaths(.libPaths())の呼び出しが続く必要がある.

一貫性のため,パスは常に normalizePath(winslash = "/")で正規化される.

Value

ファイルパスの文字列ベクトル.

References

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

See Also

library

Examples

.libPaths() # R が知っている全てのライブラリツリー

Page 294: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

294 library

library Loading/Attaching and Listing of Packages

Description

libraryと requireはアドオン・パッケージをロードし付加する.

Usage

library(package, help, pos = 2, lib.loc = NULL,character.only = FALSE, logical.return = FALSE,warn.conflicts = TRUE, quietly = FALSE,verbose = getOption("verbose"))

require(package, lib.loc = NULL, quietly = FALSE,warn.conflicts = TRUE,character.only = FALSE)

Arguments

package, help パッケージの名前で,character.onlyが FALSE (既定)か TRUEに応じて,nameか literalな文字列又は文字列.

pos ロードされた名前空間をそこへ付加する検索リスト上の位置.search()で与えられる現在の検索リスト上名前でも良い.

lib.loc 探索される Rのライブラリツリーの位置を記述する文字列か NULL.既定値である NULLは .libPaths()が現在知っている全てのライブラリに対応する.存在しないライブラリツリーは無言で無視される.

character.only packageか helpが文字列であることを仮定して良い顔塚を指示する論理値.

logical.return 論理値.もしこれが TRUEなら,成功を意味する FALSEか TRUEが返される.

warn.conflicts 論理値.もし TRUEなら新しいパッケージの付加からの相克に関して警告が出る.相克とは関数が関数を隠蔽したり,関数でないものが関数を隠蔽することをいう.

verbose 論理値.もし TRUEならば追加の診断がプリントされる.

quietly 論理値.もし TRUEならばパッケージの付加を確定するメッセージはプリントされない.そして最もしばしば,パッケージの付加が失敗してもエラー/警告はプリントされない.

Details

library(package) と require(package) は共に名前 package を持つパッケージの名前空間をロードし,それを検索パス上に付加する.require は他の関数中で使うようにデザインされている;これはもしパッケージが存在しないと FALSE を返し警告を与える(library()が既定で行うようなエラーではなく).二つの関数はともに現在付加されているパッケージのリストをチェックしそして更新し,既にロードされている名前空間は再ロードしない. (もしそうしたパッケージを再ロードしたければ detach(unload = TRUE)か unloadNamespaceを先ず呼び出す.)もし検索パス上に付加すること無くパッケージをロードしたければ requireNamespaceを見よ.

Page 295: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

library 295

パッケージのロード中のメッセージを無くすには suppressPackageStartupMessagesを使う:これは R自体からの全てのメッセージを抑えるがパッケージ作者からのそれら全てを抑えるとは限らない.

もし library が package や help 引数なしに呼び出されると, lib.loc で指定されるライブラリ中の全ての利用可能なパッケージをリストする.そしてクラス "libraryIQR"のオブジェクトとして対応する情報を返す. (このクラスの構造は将来のバージョンで変更されるかもしれない. ) 全ての利用可能なパッケージの名前だけを得るには.packages(all = TRUE)を使う.そしてより多くの情報のためには installed.packages()とする.

library(help = somename)はパッケージ somenameに関する基本的な情報を計算し,そしてこれをクラス "packageInfo"のオブジェクトととして返す.(このクラスの構造は将来のバージョンで変更されるかもしれない.) lib.locに対する既定値(NULL)と共に使われると付加されたパッケージはライブラリより前に探される.

Value

普通 libraryは(不可視で)付加されたパッケージのリストを返すが,もし logical.returnが TRUEならば TRUEか FALSEを返す.library() iとして呼ばれるとクラス "libraryIQR"のオブジェクトを返す.そして library(help=) に対してはクラス "packageInfo" の一つ.

require は(不可視で)要求されたパッケージが利用可能かどうかを指示する論理値を返す.

ライセンス

ある種のパッケージは制限的なライセンスを持ち,そうしたライセンスをユーザに気づかせることが出来る機構がある.もし getOption("checkPackageLicense") == TRUEならば, FOSSであることが知られていない(下を見よ)ライセンスを持つパッケージの最初の使用時にユーザはライセンスを眺めそれを受け入れることを要求される:受け入れられたライセンスのリストはファイル ‘~/.R/licensed’に保存される.非対話的なセッションではライセンスが未だ受け入れられていないそうしたパッケージを使うとエラーになる.

フリーもしくはオープンソースのソフトウェア(FOSS, 例えば https://en.wikipedia.org/wiki/FOSS)パッケージは available.packagesが使用するのと同じフィルターで決定されるが現在のパッケージだけに適用され,その従属物には適用されない.

またサイト全体に渡るパッケージのファイル ‘R_HOME/etc/licensed.site’がある(行ごとに一つ).

形式的メソッド

library はパッケージ methods が付加された時(既定では) 幾つかの更なる行動を取る.パッケージは形式的総称関数の定義と並んで他のパッケージ中の関数(特に base中の)を総称的になるように再定義しているかもしれない.そうした名前空間が methodsの後でロードされる度にこの情報はキャッシュされ,再定義された関数 (implicit generics)は相克リストから除外される.相克に対するキャッシュとチェックはパターンオブジェクトの調査を必要とする;検索は名前空間中のオブジェクト .noGenerics (値は任意)を定義することで避けられる.もしパッケージがそうした何らかのそうしたメソッドを持てば,これは自然にそれらが使われることを防止する.

Page 296: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

296 library

Note

libraryと requireはインストールされたパッケージだけをロード/付加出来る.そしてこれは ‘Built:’ 欄を含む ‘DESCRIPTION’ファイルを持つことで検出される.

Unix風システムではコードはパッケージが,コンパイルコードを含む限り,R.version$platform(Rがコンパイルされたプラットフォームの標準名)で与えられるのと類似のオペレーティング・システムの下でインストールされたかどうかをチェックする.コンパイルコードを含まないパッケージはUnix風・システム間で共有できるが,行の終末と OS固有のヘルプファイルに伴う固有の潜在的問題のせいで,他の OSでは共有できるとは限らない.もしサブアーキテクチャが使われていると,構築に使われた OSは異なるかもしれないので,OS の類似性はチェックされない. (例えば i386-pc-linux-gnu コードはx86_64-unknown-linux-gnu OS上でコンパイル出来る).

libraryと requireに与えられたパッケージ名はパッケージの ‘DESCRIPTION’ファイル中で与えられたのと正確に同じでなければならない.これはWindowsや OS Xでは通例の大・小文字を区別しないファイルシステムに於いても同じである.

References

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

See Also

.libPaths, .packages.

attach, detach, search, objects, autoload, requireNamespace, library.dynam, data, install.packagesand installed.packages; INSTALL, REMOVE.

付加される初期パッケージのセットは options(defaultPackages=)で設定される: Startupも見よ.

Examples

library() # 利用可能なパッケージをリストするlibrary(lib.loc = .Library) # 既定のライブラリ中の全てのパッケージをリストするlibrary(help = splines) # パッケージ 'splines' に関するドキュメントlibrary(splines) # パッケージ 'splines' を付加するrequire(splines) # 同じsearch() # "splines" もdetach("package:splines")

# もしパッケージ名が文字列ベクトル中にあれば pkg <- "splines" を使うlibrary(pkg, character.only = TRUE)detach(pos = match(paste("package", pkg, sep = ":"), search()))

require(pkg, character.only = TRUE)detach(pos = match(paste("package", pkg, sep = ":"), search()))

require(nonexistent) # FALSE## Not run:## もしできるだけ少しだけマスクしたければ次を使うlibrary(mypkg, pos = "package:base")

## End(Not run)

Page 297: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

library.dynam 297

library.dynam Loading DLLs from Packages

Description

指定されたコンパイルコードのファイルを,もしそれがまだロードされていなければロードする.もしくはそれをアンロードする.

Usage

library.dynam(chname, package, lib.loc,verbose = getOption("verbose"),file.ext = .Platform$dynlib.ext, ...)

library.dynam.unload(chname, libpath,verbose = getOption("verbose"),file.ext = .Platform$dynlib.ext)

.dynLibs(new)

Arguments

chname ロードする DLL (又は dynamic shared objectや libraryとして知られている)の名前である文字列.

package パッケージの名前を持つ文字列.

lib.loc 探索される Rのライブラリツリーの位置を記述する文字列.

libpath その DLLをアンロードするロード済みパッケージへのパス.

verbose DLLのロード前に案内をコンソールにプリントするかどうかを指示する論理値.既定値はシステムオプション中の verbose節から取られる.

file.ext ロードされるライブラリを指定するファイル名へ付け加えられる拡張子(もし使われていれば ‘.’ を含む).これの既定値は OSに対する適当な値.

... ある種のライブラリが必要とする追加引数.ライブラリとその従属物のロードを制御するために dyn.loadの呼び出しに渡される.

new パッケージによりロードされた DLLに対応する "DLLInfo"オブジェクトのリスト.無くても良い.

Details

これらの関数がどのようなオブジェクトを処理するについては dyn.loadを見よ.

library.dynamはコマンドラインではなくパッケージの内部で使われることを意図しており,実際に .onLoadの内部でのみ使われるべきである. DLLに対するシステム固有の拡張子(例えば Unix風システムでは ‘.so’や ‘.sl’,Windowsでは ‘.dll’)は付け加えてはならない.

library.dynam.unloadは .onUnloadの中で使うようにデザインされている:これは DLLをアンロードし .dynLibs()の値を更新する.

.dynLibsはパッケージより現在ロードされている (library.dynamを使い) DLLを得る,もしくは設定するために使われる.

Page 298: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

298 license

Value

もし chnameが指定されないと library.dynamはパッケージによりロードされた DLLに対応するクラス "DLLInfoList"のオブジェクトを返す.

もし chnameが指定されるとクラス "DLLInfo"のオブジェクトを不可視で返す.これはDLLを特定し将来の呼び出しで使うことが出来る.クラス "DLLInfo"は $に対するメソッドを持ち,その DLL内でネイティブなシンボルを解決するのに使うことが出来る.

library.dynam.unload は成功裏にロードされた DLL を特定するクラス "DLLInfo" のオブジェクトを返す.

.dynLibsはその現在の値に対応するクラス "DLLInfoList"のオブジェクトを返す.

警告

library.dynam によってロードされた DLL に対して dyn.unload を使ってはならない:.dynLibsが更新されることを保証するには library.dynam.unloadを使う.さもなければ library.dynamの再呼び出しはオブジェクトが既にロード済みと答えるであろう.

ある DLLをアンロードし,それから同じファイルの改訂版を再ロード出来るかどうかはOS依存である:dyn.unloadに対するヘルプの ‘値’節を見よ.

References

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

See Also

"DLLInfo"と "DLLInfoList"オブジェクトに関する情報は getLoadedDLLs.

.onLoad, library, dyn.load, .packages, .libPaths.

適当な DLLをどのように作るかに付いては SHLIB.

Examples

## どの DLL がパッケージにより動的にロードされているか?library.dynam()

license The R License Terms

Description

Rが配布される際のライセンス条項.

Usage

license()licence()

Page 299: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

list 299

Details

R は GNU GENERAL PUBLIC LICENSE,バージョン 2, June 1991 かバージョン 3, June2007,の条項の下で配布される.バージョン 2のライセンスのコピーが ‘R_HOME/doc/COPYING’ファイル中にあり, RShowDoc("COPYING")で見ることが出来る.ライセンスのバージョン 3は RShowDoc("GPL-3")により表示できる.

少数のファイル(APIヘッダーファイル)は LESSER GNU GENERAL PUBLIC LICENSE,バージョン 2.1又はそれ以降,の下で配布される. ‘$R_SHARE_DIR/licenses/LGPL-2.1’ファイル中にこのライセンスのコピーがあり, RShowDoc("LGPL-2.1")によって見ることが出来る.ライセンスのバージョン 3は RShowDoc("LGPL-3")で表示できる.

list Lists – Generic and Dotted Pairs

Description

二種類の Rリストを作る,強制変換する,そしてチェックする.

Usage

list(...)pairlist(...)

as.list(x, ...)## S3 method for class 'environment'as.list(x, all.names = FALSE, sorted = FALSE, ...)as.pairlist(x)

is.list(x)is.pairlist(x)

alist(...)

Arguments

... オブジェクト,名前付きかもしれない.

x 強制変換又は検査されるオブジェクト.

all.names 全ての値か,名前の先頭がドットで始まらないものだけ(既定)をコピーするかどうかを指示する論理値.

sorted 結果のリストの名前をソート(増加順)するかどうかを指示する論理値.これは少々コストがかかるが,環境の比較に対して有益である.

Details

R の殆どのリストは内部的には総称的ベクトルである.伝統的なドット対リスト(LISPに於けるような)が利用可能であるがユーザーからは滅多に見ることができない (関数のformalsとして以外).

listや pairlistへの引数は valueもしくは tag = valueの型式を持つ.これらの関数はどのように引数が指定されたかに応じて,各値がタグ付き・タグ無しの引数から構成されたリストかドット対リストを返す.

Page 300: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

300 list

alistはその引数をそれらが関数引数を記述するかのように処理する.従って値は評価されず,値のないタグ付き引数が許される一方, listは単にそれらを無視する. alistは最もしばしば formalsの関連で使われる.

as.list はその引数をリストに変換しようと試みる.関数に対してはこれは形式的引数のリストを連結したものと関数本体を返す.表現式に対しては構成要素のリストが返される. as.list は総称的であり,既定メソッドは非リストに対してはas.vector(mode = "list") を呼び出す.as.vector に対するメソッドが使われるかもしれない. as.list は因子を要素が唯ひとつのリストに転換する.引数が既にリスト化表現式で無い限り,属性は捨て去られるかもしれない. (これは常に属性を捨て去るas.character等とは一貫性がなく,リストのコピーは手間がかかるための効率性のためである.)

is.listは TRUEを,その引数が listか length > 0の pairlistのとき,そしてその時だけ返す.is.pairlistは TRUEを,引数が対リストか NULL (下を見よ)の時,そしてその時だけ返す.

as.listに対する "environment"メソッドは名前・値の対を(ドットで始まらない名前に対して)環境から名前付きリストに変換する.ユーザーは全ての名前付きオブジェクトがコピーされることを要求できる. sorted = TRUEで無い限り,リストは特には順序付けられていない (順序はオブジェクトの生成順序と環境がハッシュされているかどうかに依存する).囲み環境は探されない. (オブジェクトは複製されるためこれは高価な操作になる可能性がある.)リストオブジェクトに対する逆操作 as.environment()メソッドがある.

空の対リスト pairlist()は NULLと同じである.これは list()とは異なる.

as.pairlist は as.vector(x, "pairlist") として実装されており,従って総称的関数as.vectorに対するメソッドを選択適用する.リストは要素毎に対リストにコピーされ,リストの名前は対リストのタグとして使われる:他の型の引数に対する返り値はドキュメント化されていない.

list, is.listそして is.pairlistはプリミティブな関数である.

References

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

See Also

空の成分を持つリストの生成は vector("list", length);連結には c,formals. unlistは近似的に as.list()の逆.

プロット注釈中でリストを使うには ‘plotmath’.

Examples

require(graphics)

# プロット構造を作るpts <- list(x = cars[,1], y = cars[,2])plot(pts)

is.pairlist(.Options) # ユーザーレベルの対リスト

## 長さ5の "予め確保された" 空リストvector("list", 5)

Page 301: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

list.files 301

# 引数リストf <- function() x# "..." 引数の指定に注意:formals(f) <- al <- alist(x = , y = 2+3, ... = )fal

## 環境からリストへの変換

e1 <- new.env()e1$a <- 10e1$b <- 20as.list(e1)

list.files List the Files in a Directory/Folder

Description

これらの関数はファイルの名前の文字列ベクトルや名前付きディレクトリ中のディレクトリを作る.

Usage

list.files(path = ".", pattern = NULL, all.files = FALSE,full.names = FALSE, recursive = FALSE,ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)

dir(path = ".", pattern = NULL, all.files = FALSE,full.names = FALSE, recursive = FALSE,ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)

list.dirs(path = ".", full.names = TRUE, recursive = TRUE)

Arguments

path 完全なパス名の文字列ベクトル;既定値は作業ディレクトリ getwd()に対応する.チルド展開が行われる(path.expandを見よ).欠損値は無視される.

pattern オプションの正規表現.正規表現にマッチするファイル名だけが返される.

all.files 論理値.もし FALSE ならば隠しファイルの名前は返され無い.もしTRUEならば全てのファイル名が返される.

full.names 論理値.もし TRUEならディレクトリパスが相対ファイルパスを表すファイル名の先頭に付け加えられる.

recursive 論理値.ディレクトリ内部まで再帰的にリストするか?

ignore.case 論理値.パターンマッチングは大・小文字を区別すべきか?

include.dirs 論理値.再帰的リスティング中でサブディレクトリ名を含めるべきか?(これらは非再帰的なもののなかに常にある).

no.. 論理値."."と ".."双方も非再帰的リスティングから除外されるべきか?

Page 302: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

302 list2env

Value

指定されたディレクトリ内のファイルの名前を含む文字列ベクトル,又はファイルがなければ "".もしパスが存在しないか読込み不可ならば警告無しにスキップされる.

もし full.names = TRUEならばファイルはフルパスに関してアルファベット順にソートされている.

list.dirsは暗黙のうちに all.files = TRUEを持ち,もし recursive = TRUEならば回答は path自体を含む (それが読み込み可能なディレクトリである限り).

Note

ファイル名の約束はプラットフォーム依存である.パターンマッチングが大・小文字を区別するかどうかは OSがそうするかどうかに依存する.

POSIXファイルシステムではリストはディレクトリへのシンボリックリンクをフォローする.

Author(s)

Ross Ihaka, Brian Ripley

See Also

もっと多くのファイルを扱う関数には file.info, file.access and filesそして対話的な選択には file.choose.

ワイルドカード(システムのファイル命令やシェルが使うような)を正規表現に変えるには glob2rx.

ファイルパスに関するワイルドカードの展開には Sys.glob.

Examples

list.files(R.home())## a-l か r で始まるファイルだけ## a-l はロケール依存であるが,大・小文字の区別の無いマッチング## は英語のロケールでは曖昧さが無いdir("../..", pattern = "^[a-lr]", full.names = TRUE, ignore.case = TRUE)

list.dirs(R.home("doc"))list.dirs(R.home("doc"), full.names = FALSE)

list2env From A List, Build or Add To an Environment

Description

名前付きのリストと xから全てのリスト成分をオブジェクトとして含む環境を作る.又は xから既に存在する環境に“多重付値”を行う.

Usage

list2env(x, envir = NULL, parent = parent.frame(),hash = (length(x) > 100), size = max(29L, length(x)))

Page 303: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

list2env 303

Arguments

x リスト.ここで names(x)は空の要素("")を含んではならない.

envir 環境もしくは NULL.

parent (envir = NULL の場合用):親フレーム,別名囲み環境,new.env を見よ.

hash (envir = NULLの場合用):作られた環境がハッシュを使うかどうかを指示する論理値,new.envを見よ.

size (envir = NULL, hash = TRUEの場合用):ハッシュサイズ, new.envを見よ.

Details

これは環境に関してハッシュが使われない限り,大きな入力に対して非常に遅くなる.

環境はユニークに名前がついた項目を持つべきであるが,名前付きリストはそうではない;リストが重複する名前を持てば,それは使われる名前を持つ最後の要素である.

Value

環境.もし envir引数が NULLならば新規に作られる (new.envによるように).さもなければ環境 envirを更新する.環境は決して重複しないから引数 envirも変更される.

Author(s)

Martin Maechler

See Also

environment, new.env, as.environment;更に assign.

(意味論的な) “inverse”: as.list.environment.

Examples

L <- list(a = 1, b = 2:4, p = pi, ff = gl(3, 4, labels = LETTERS[1:3]))e <- list2env(L)ls(e)stopifnot(ls(e) == sort(names(L)),

identical(L$b, e$b)) # "$" はリストに対するように環境に動作する

## 逆操作を行うときの一貫性ll <- as.list(e) # -> as.list.environment() メソッドが選択適用されるrbind(names(L), names(ll)) # 典型的に同じ順序ではないがしかし同じ内容:stopifnot(identical(L [sort.list(names(L ))],

ll[sort.list(names(ll))]))

## そして e へ加える -- 高速な "multi-assign" と見做せる:list2env(list(abc = LETTERS, note = "just an example",

df = data.frame(x = rnorm(20), y = rbinom(20, 1, pr = 0.2))),envir = e)

utils::ls.str(e)

Page 304: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

304 load

load Reload Saved Datasets

Description

関数 saveを用いて書かれたデータセットを再ロードする.

Usage

load(file, envir = parent.frame(), verbose = FALSE)

Arguments

file (読みだし可能でバイナリーモードの)コネクションかロードするファイルの名前を与える文字列(チルド展開がされた時).

envir データをロードすべき環境.

verbose ロード中に項目名をプリントするか?

Details

loadは現在もしくは以前の書式で保存された Rオブジェクトをロードできる.それは圧縮ファイル(saveを見よ)をファイルから直接に,又は適当なコネクション(urlへの呼び出しを含む)からロードできる.

未だ開かれていないコネクションはモード "rb"で開かれ,使用後は閉じられる. gzfileか gzconコネクション以外のコネクションは圧縮保管が処理できるように gzcon中にラップされる:これはコネクションを変更された状態(特にバイナリオンリー)にしたままにし,明示的に閉じられる必要がある (これはガベージコレクションされない).

現在の書式(R 1.4.0以来使用)で保存された Rオブジェクトだけがコネクションから読み取れる.コネクション上に入力がなければ警告が与えられるが,現在の書式出ない入力はエラーになる.

以前のバージョンからのロードは‘マジックナンバー’に関する警告を与える:マジックナンバー 1971:1977は R < 0.99.0のもので, RD[ABX]1は R 0.99.0から R 1.3.1までのものである.これらは全て時代遅れであり,現在の書式で再保存することを強く勧める.

verbose引数は主にデバッグ用を意図している.もしそれが TRUEならば,オブジェクトがファイルからロードされるにつれ,それらの名前がコンソールにプリントされる.もし verboseが1より大きな整数に設定されると,属性に対応する追加の名前と個別のオブジェクトの他の部分もプリントされる.値が大きければ名前のより詳細がプリントされる.

オブジェクトは,普通関数や公式の環境の一部として,名前空間への参照付きで保存できる. R 3.1.0以来そうしたオブジェクトは名前空間が利用できなくてもロードできるようになった:それは警告付きで大局的環境への参照に置き換えられる.警告はそうした参照を持つ最初のオブジェクトを特定する(しかし一つ以上あるかもしれない).

Value

作られたオブジェクトの名前の文字列ベクトルで不可視.

Page 305: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

load 305

警告

保存された Rオブジェクトは ascii = TRUEで保存した時すらバイナリーファイルであり,それらが行末マーカーの変換無しに移されることを保証する.loadはそうした変換の検出を試み,情報付きのエラーメッセージを与える.

load(<file>) は現在の環境(典型的に作業スペース .GlobalEnv) 中の同名の既存オブジェクトを置き換えるので,重要なデータを上書きする潜在的な可能性がある.envir = を使って異なった環境にロードするか,検索パス中の新しい項目にロードする attach(file)の使用がかなりより安全である.

See Also

save, download.file;更に load()に対するラッパとしての attach.

基礎にあるシリアル化書式への他のインタフェイスに付いては unserializeと readRDSを見よ.

Examples

## 全てのデータを保存するxx <- pi # データがあるかどうか確認するためsave(list = ls(all = TRUE), file= "all.RData")rm(xx)

## 保存されたデータを現在の環境に復元local({

load("all.RData")ls()

})

xx <- exp(1:3)## 保存データをユーザの作業空間に復元load("all.RData") ## ここではこれは次と同値## load("all.RData", .GlobalEnv)## しかしながらこれは .GlobalEnv 中の同名オブジェクトを全て抹殺する!xx # no longer exp(1:3)rm(xx)attach("all.RData") # より安全,.GlobalEnv 中の隠蔽される同名のオブジェクトを警告ls(pos = 2)## また典型的には検索パスを掃除する必要があるdetach("file:all.RData")

## 掃除(一例):unlink("all.RData")

## Not run:con <- url("http://some.where.net/R/data/example.rda")## どのようなオブジェクトが作られたか見るために値をプリントprint(load(con))close(con) # url() は常にコネクションを開く

## End(Not run)

Page 306: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

306 locales

locales Query or Set Aspects of the Locale

Description

Rプロセスに対するロケールの様相を得る,設定する.

Usage

Sys.getlocale(category = "LC_ALL")Sys.setlocale(category = "LC_ALL", locale = "")

Arguments

category 文字列.以下のカテゴリーは常にサポートされるべきである:"LC_ALL","LC_COLLATE", "LC_CTYPE", "LC_MONETARY", "LC_NUMERIC"そして "LC_TIME".ある種のシステム(Windows でない)はまた "LC_MESSAGES", "LC_PAPER"そして "LC_MEASUREMENT"をサポートする.

locale 文字列.使用中のシステム上の適正なロケール名.通常 "" (既定)はシステムの既定ロケールをピックアップする.

Details

ロケールはプログラムの国際化の様々な側面を記述する.最初 R のロケールの殆どの様相は "C" に設定されている (これは C 言語に対する既定で北米の用法を反映している). Rは "LC_CTYPE"と "LC_COLLATE"を設定する.これは異なった文字セットとその文字セットでのアルファベット比較の使用を許し, (sortの使用を含む),"LC_MONETARY"(Sys.localeconvが使用),そして "LC_TIME"は as.POSIXltと strptimeの挙動とそれらを使う関数(dateは除く)に影響するかもしれない.

ここで説明される最初の7つのカテゴリーは POSIXで規定されたものである."LC_MESSAGES"はメッセージ翻訳をサポートしないシステム上では "C"であり,Windowsではサポートされない.サポートされないカテゴリーの使用を試みるのは Sys.setlocaleに対してエラーになる.

"LC_ALL"の設定は "LC_COLLATE", "LC_CTYPE", "LC_MONETARY"そして "LC_TIME"だけを設定することを注意しよう.

不正なロケールを設定しようとしても無視される. OSに依存して警告が出るかもしれないし出ないかもしれない.

セッション中に文字集合を変更しようと試みる(もしそれが異なった文字集合を意味するならば Sys.setlocale("LC_TYPE", )で)ことは出来ないかもしれず,ある種の混乱を引き起こしやすい.

環境変数 LANGUAGEは,ほとんどの Rプラットフォーム上でメッセージ翻訳のための言語の選択に於いて "LC_MESSAGES"に優先する.

ICU が照合に使われているプラットフォームでは,照合用に使われるロケールはicuSetCollate によって設定できる. Windows を除き,初期設定は "LC_COLLATE" カテゴリーから取られ,これが Sys.setlocaleの呼び出しで変更された時はリセットされる.

Page 307: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

locales 307

Value

長さ1の文字列で使用中のロケールを説明する(Sys.setlocaleによる設定後),又はもし現在のロケール設定が不正ならば空の文字列で,もしロケール情報が利用できなければNULL.

category = "LC_ALL"に対しては文字列の詳細はシステム依存である:一つのロケール名かもしれないし,"/" (Solaris, OS X)か ";" (Windows, Linux)で区切られたロケール名のセットかもしれない.可搬性のためにはカテゴリーは個別に問い合わせたほうが良い:foo <- Sys.getlocale()の結果が Sys.setlocale("LC_ALL", locale = foo)中で使えるとは限らない.

警告

設定 "LC_NUMERIC"は Rが異常をもたらす可能性があり警告が出る. R中の入力変換自体は影響を受けないが,ASCIIファイルやパッケージの読み書きや影響を受けるかもしれない.

Unix風システムで,グラフィカル又はテキスト出力を作るためそれを一時的に設定することは上手く動作するかもしれないが, options(OutDec)の使用が好ましい.

国際化されていない Trioライブラリを使うため,Windowsでは R自体が使うほとんどすべての出力ルーチンは設定 "LC_NUMERIC"を無視する.

Note

Rが稼働中にロケールのカテゴリーの値を変更することは OSサービスによって気づかれるべきである.そして通常そうであるが,例外も見受けられる(普通照合サービスに於いて).

See Also

category = "LC_TIME"の使用に対しては strptime.数値と通貨表示の詳細は Sys.localeconv.l10n_infoはロケールとそのエンコーディングに関する幾つかの要約を与える.

ロケールの背景と自分のシステムのロケールの見つけ方に対してはマニュアル ‘RInstallation and Administration’.

Examples

Sys.getlocale()Sys.getlocale("LC_TIME")## Not run:Sys.setlocale("LC_TIME", "de") # Solaris: 詳細は OS 依存Sys.setlocale("LC_TIME", "de_DE.utf8") # 現代の Linux 等Sys.setlocale("LC_TIME", "de_DE.UTF-8") # 同上Sys.setlocale("LC_TIME", "de_DE") # OS X, UTF-8 使用Sys.setlocale("LC_TIME", "German") # Windows

## End(Not run)Sys.getlocale("LC_PAPER") # 設定出来るかもしれないし出来ないかもしれない

## Not run:Sys.setlocale("LC_COLLATE", "C") # 普通ロケール固有のソートをオフにするが

# 全てのプラットフォームに対してではない## End(Not run)

Page 308: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

308 log

log Logarithms and Exponentials

Description

log は対数を計算する,既定では自然対数. log10 は常用対数(つまり底が10),そしてlog2 はバイナリ対数(つまり底が2).一般形 log(x, base) は底が base の対数を計算する.

log1p(x)は log(1 + x)を範囲 |x| � 1で正確に計算する.

expは指数関数を計算する.

expm1(x)は exp(x)− 1を同様に範囲 |x| � 1で正確に計算する.

Usage

log(x, base = exp(1))logb(x, base = exp(1))log10(x)log2(x)

log1p(x)

exp(x)expm1(x)

Arguments

x 数値または複素数値ベクトル.

base 正または複素数値:対数が計算される底.既定値は e=exp(1).

Details

logb以外はすべて総称的関数である:メソッドを個別に,もしくは Mathグループ総称経由で書くことが出来る.

log10と log2は便利なラッパに過ぎないが,底が10と2の対数は(log経由かラッパ経由かにかかわらず) OSがサポートする場合はより効率的かつ正確に計算される.それらに対してはメソッドを個別に設定できる(そして,さもなければ logに対するメソッドが使われる).

logbは Sとの互換性のための logに対するラッパである.もし(S3または S4)メソッドがlogに対して設定されていれば,それらは選択適用される. logb自体に S4メソッドを設定してはならない.

logを除く全てはプリミティブな関数である.

Value

xと同じ長さのベクトルで変換された値を含む. log(0)は -Infを与え,負の xに対しては NaNとなる.exp(-Inf)は 0である.

対数関数への複素数入力に対しては値は複素数で,虚数部分は範囲 [−π, π]にある:範囲のどちらの端点を使うかはプラットフォームに依存するかもしれない.

Page 309: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Logic 309

S4メソッド

exp, expm1, log, log10, log2そして log1pは S4総称的であり, Mathグループ総称関数の一員である.

logに対する S4総称的関数はただ一つの引数 xのシグネチャを持つが,baseはメソッドに引き渡すことが出来る (しかしメソッドの選択には使われない)ことを注意しよう.他方で,もし Mathグループに対してだけメソッドを設定すると logの base引数はクラスからは無視される.

Source

log1p と expm1 はOSの機能を利用するかもしれないが,もしそれが利用できなければ,それぞれ W. Fullerton of Los Alamos Scientific Laboratory (http://www.netlib.org/slatec/fnlib/dlnrel.f を参照)による Fortran サブルーチンと,(小さな x に対しては)log1p(y) = xの解に対する一回のニュートン法ステップが使われる.

References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth &Brooks/Cole. (logに対しては log10と exp.)

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer. (logbに対して.)

See Also

Trig, sqrt, Arithmetic.

Examples

log(exp(3))log10(1e7) # = 7

x <- 10^-(1+2*1:9)cbind(x, log(1+x), log1p(x), exp(x)-1, expm1(x))

Logic Logical Operators

Description

これらの演算子はバイト型,論理型そして数値風のベクトルに適用される.

Usage

! xx & yx && yx | yx || yxor(x, y)

isTRUE(x)

Page 310: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

310 Logic

Arguments

x, y バイト型もしくは論理型,または ‘数値風’ベクトル(つまり,型 double(クラス numeric), integer そして complex)),もしくはメソッドが存在するオブジェクト.

Details

! は論理否定 (NOT)を意味する.

&と &&は論理積 AND,そして |と ||は論理和 ORを意味する.短い形は算術演算と同じように要素毎に作用する.長い形は各々のベクトルの最初の要素だけを左から右へ評価する.評価は結果が定まるまでだけ進行する.長い形はプログラムの制御フローにふさわしく, if文では好ましい.

xorは論理的排他和を意味する.

isTRUE(x)は identical(TRUE, x)の省略形で,従って xがその唯一の要素が TRUEでいかなる属性(名前すら)も持たないの長さ1のベクトルの時,そしてその時だけ真となる.

数値と複素数値は論理値に強制変換され,ゼロは偽ですべてのゼロでない値は真となる.バイト型ベクトルは !, &, |そして xorに対していかなる強制変換も無しで処理され,演算はビット毎に行われる(従って ! は1の補数になる).

演算子 !, &そして |は総称的関数である:それらに対するメソッドを個別に,もしくはグループ総称的 Ops (または S4 Logic,以下を見よ)に書くことが出来る.(選択がどのように行われるかについては Opsを見よ.)

NAは適正な論理オブジェクトである. xまたは yの要素が NAであると,結果はもし曖昧であれば NAになる.換言すれば NA & TRUEは NAと評価されるが,NA & FALSEは FALSEと評価される.以下の例を見よ.

これらの演算子の優先順序については Syntaxを見よ:他の多くの言語(Sを含む)と異なり ANDと OR演算子は同じ優先度を持たない(AND演算子は OR演算子よりも優先度が高い).

Value

! に対しては xと同じ長さの論理値もしくはバイト型ベクトル (バイト型 xに対し):名前,次元そして次元名,もし強制変換されなければ他のすべての属性(クラスを含む)は xからコピーされる.

|, &そして xorに対しては論理値もしくはバイト型ベクトル.もし長さゼロのベクトルが含まれれば結果は長さゼロを持つ.さもなければ,短い方のベクトルの要素が必要に応じてリサイクルされる (もし一部だけがリサイクルされる時は警告が出る).結果の属性を決める規則はかなり複雑である.殆どの属性は長い方の引数から,もし同じ長さなら最初の引数から取られる.名前はもしそれが結果と同じ長さなら最初から取られ,さもなければ二番目の引数が同じ長さなら二番目から取られる.時系列に対しては,こうした操作は系列が両立する時だけ許され,時系列であるどちらかのクラスと属性 tsp (もし双方が時系列なら同じ時)が使われる.配列(と配列結果)に対しては次元と次元名は,もし最初の引数が配列なら最初から,さもなければ二番目から取られる.

||, &&と isTRUEに対しては長さ1の論理値ベクトル.

S4 methods

!, &そして |は S4総称的であり,後の二つは Logicグループ総称的である(従ってメソッドは引数名 e1, e2を必要とする).

Page 311: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

logical 311

Note

要素ごとの演算は時折,例えば `&`(x, y)のような関数として呼び出される:引数のマッチングがどのように行われるかについては Opsを見よ.

References

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

See Also

TRUEまたは logical.

多くのスカラ引数への ORと ANDについては anyと all.

演算子の優先順序については Syntax.

整数ベクトルのビット毎版に対しては bitwAnd.

Examples

y <- 1 + (x <- stats::rpois(50, lambda = 1.5) / 4 - 1)x[(x > 0) & (x < 1)] # すべての x 値は 0 と 1 の間if (any(x == 0) || any(y == 0)) "zero encountered"

## 真偽表を作る :

x <- c(NA, FALSE, TRUE)names(x) <- as.character(x)outer(x, x, "&") ## AND 表outer(x, x, "|") ## OR 表

logical Logical Vectors

Description

型 "logical"のオブジェクトを作る,また検査する,そして基本論理定数.

Usage

TRUEFALSET; F

logical(length = 0)as.logical(x, ...)is.logical(x)

Arguments

length 必要な長さを指定する非負整数.倍精度値は整数に強制変換される:長さ1以外の引数を与えるとエラーになる.

x 変換又は検査されるオブジェクト.

... 他のメソッドへ・から渡される追加引数.

Page 312: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

312 LongVectors

Details

TRUEと FALSEは論理定数を表す R言語の予約後であるが, Tと Fは初期値がこれらに設定される大局的変数である.これら4種類は全て logical(1)ベクトルである.

論理値ベクトルは数値が必要となる文脈では整数ベクトルに強制変換される. TRUEは1Lに,FALSEは 0Lに,そして NAは NA_integer_にマップされる.

Value

logicalは指定された長さの論理値ベクトルを作る.ベクトルの各要素は FALSEに等しい.

as.logicalはその引数を論理値型に変換しようと試みる. factorに対しては,これは水準 (ラベル)を使う.as.vectorと同様に名前を含む属性は剥ぎ取られる.文字列 "T","TRUE", "True", "true"は真, "F", "FALSE", "False", "false"は偽,そして他の全ては NAと見做される.

is.logicalはその引数が論理値型か否かに応じて TRUEか FALSEを返す.

References

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

See Also

他の論理定数 NA.

LongVectors Long Vectors

Description

231またはそれ以上の要素を持つベクトルが R 3.0.0で登場した.

Details

R 3.0.0以前では Rのすべてのベクトルは最大 231 − 1個の要素に限られ,整数ベクトルで添字化可能であった.

現在すべての atomic (バイト,整数,論理値,数値,複素数値,文字列)ベクトル, listとexpressionは64ビットプラットフォームではもっと長くすることが可能である:そうしたベクトルは ‘ロングベクトル’と呼ばれ,少々異なった内部構造を持つ.理論上は 252 個の要素を持つことが出来るが,現在の CPUと OSのアドレス空間の制限はもっと限られている.そうしたオブジェクトは倍精度実数として表現される長さを持ち,倍精度実数ベクトルで添字化可能である.

配列(行列を含む)は各次元が最大 231− 1である限りロングベクトルを使うことが出来る:従って1次元のロング配列は存在しない.

Rのコードは典型的には僅かな変更でロングベクトルを処理できる.例えば,おそらく長さに対して不必要な as.integerが使われていないことを確認する.しかしながら,コンパイルされたコードは典型的には相当な変更を必要とする..Cと .Fortranインタフェイスはロングベクトルを受けつかず,従って .Call (もしくは同類)を使う必要があることを注意しよう.

Page 313: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

lower.tri 313

保管上の必要(文字毎に最低64バイト必要)から,文字列ベクトルは少数の異なる要素を持つ時だけ有用になるであろう.その時ですら因子の方がより効率的である(要素毎に8ではなく4バイト).従ってロングベクトルの主な使用は整数ベクトル(因子を含む)と数値ベクトルを意図している.

行列代数

今や10億個の要素を持つ m × n 行列が使用可能になった.行列代数(%*%, crossprod,svd, qr, solve等)や eigenが実際に可能かどうかは,Fortranコンパイラや外部 BLASやLAPACKが使用に使われているかを含む実装次第である.

実用的なパフォーマンスを得るためには効率的な並列 BLASの移植がしばしば重要である.例えば,あるプラットフォームでは 47,000正方行列に対する cholは内部 BLASを用いて約5時間,最適化 BLASを1コアで使うと21分, 16コアの最適化 BLASでは2分かかった.

lower.tri Lower and Upper Triangular Part of a Matrix

Description

与えられた行列と同じサイズで,下側や上側三角部分の要素が TRUEの論理値行列を返す.

Usage

lower.tri(x, diag = FALSE)upper.tri(x, diag = FALSE)

Arguments

x 行列.

diag 論理値.対角部分を含めるか?

See Also

diag, matrix.

Examples

(m2 <- matrix(1:20, 4, 5))lower.tri(m2)m2[lower.tri(m2)] <- NAm2

Page 314: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

314 ls

ls List Objects

Description

ls と objects は指定された環境中のオブジェクトの名前を与える文字列ベクトルを返す.トップレベルのプロンプトに対して引数無しで使われると lsはユーザが定義したデータセットと関数を示す.関数内部で引数無しで使われると関数の局所引数の名前を返す:これは browserとの関連で有用である.

Usage

ls(name, pos = -1L, envir = as.environment(pos),all.names = FALSE, pattern, sorted = TRUE)

objects(name, pos= -1L, envir = as.environment(pos),all.names = FALSE, pattern, sorted = TRUE)

Arguments

name 利用可能なオブジェクトのリスティングに於いてどの環境を使うか.既定は現在の環境.過去との互換性から nameと名付けられているが,この引数は環境を任意の型式で指定できる, ‘詳細’節を見よ.

pos 環境を検索リスト中の位置として指定する nameへの別の引数.主に過去との互換性ためにここにある.

envir 環境を指定する nameへの別の引数.主に過去との互換性ためにここにある.

all.names 論理値.もし TRUEなら,全てのオブジェクトの名前が返される.もしFALSEなら ‘.’ で始まる名前は除外される.

pattern オプションの正規表現. patternにマッチするオブジェクトだけが返される. glob2rxはワイルドカードパターンを正規表現に変換するのに使える.

sorted 結果の文字列をアルファベット順にソートするかどうかを指示する論理値.これは ls()がほとんどの時間を費やす部分になる可能性があることを注意する.

Details

name引数はそこからオブジェクト名が取り出される環境を幾つかの方法の一つで指定できる:整数として(検索リスト中の位置);検索リスト中の要素の名前の文字列;もしくは現在アクティブな関数呼び出しにアクセスする明示的な environment (sys.frameの使用を含む).既定では ls又は objectsへの呼び出しの環境が使われる.posと envir引数は環境を指定する別の方法であるが,主に過去への互換性のためにここにある.

sorted = TRUEに対する文字列の順序はロケール依存である, Sys.getlocaleを見よ.もし sorted = FALSEならば順序は任意,もし環境がハッシュされていればオブジェクトが挿入された順序,等.

References

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

Page 315: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

make.names 315

See Also

ワイルドカードパターンを正規表現に変換するには glob2rx.

strに基づく長いリスティングには ls.str;検索パス全体からオブジェクトを見つけるには apropos (又は find); ‘正規表現’に関するより詳細は grep;オブジェクト指向プログラミングに対しては class, methods等.

Examples

.Ob <- 1ls(pattern = "O")ls(pattern= "O", all.names = TRUE) # 同様に ".[foo]" を示す

# myfunc 内部には変数が定義されていないので空のリストを示すmyfunc <- function() {ls()}myfunc()

# myfunc 内部で局所変数を定義myfunc <- function() {y <- 1; ls()}myfunc() # "y" を示す

make.names Make Syntactically Valid Names

Description

文字列ベクトルから構文的に正しい名前を作る.

Usage

make.names(names, unique = FALSE, allow_ = TRUE)

Arguments

names 構文的に正しい名前に変換される文字列ベクトル.これは必要なら文字に変換される.

unique 論理値;もし TRUEなら結果の要素はユニークである.これは,例えば列名としては望ましいかもしれない.

allow_ 論理値.1.9.0. 以前の Rへの互換性のため.

Details

構文的に適正な名前は文字,数字,そしてドットもしくはアンダースコアから成り,文字かドットで始まり数字が続かない. ".2way"のような名前や予約語は適正ではない.

文字の定義は現在のロケールに依存するが, ASCII数字だけが数字と考えられる.

必要なら文字 "X"が先頭に付く.全ての不正な文字は "."と翻訳される.欠損値は "NA"と翻訳される. Rのキーワードにマッチする名前はドットが付け加えられる.重複した値は make.uniqueで変更される.

Page 316: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

316 make.unique

Value

namesと同じ長さの文字列ベクトルで,各々が現在のロケールのエンコーディングで構文的に正しい名前に変換されている.

警告

ある種の OS,特に FreeBSD,はある種のロケールでどの文字がアルファベットなのかについて非常に不正確な情報を報告する(典型的には UTF-8ロケールを含む多バイトロケール).しかしながら RはWindows, OS Xそして AIXに対しては正しく置き換える.

Note

Rのバージョン 1.9.0以前ではアンダースコアは変数名には使えず,それらがドットに変換されていることに基づいたコードは最早動作しない.過去への互換性のためにはallow_ = FALSEを使う.

allow_ = FALSEも名前にアンダースコアを認めないアプリケーションへの移出用に名前を作る際には有用である(例えば,S-PLUSやある種の DBMS).

See Also

make.unique, names, character, data.frame.

Examples

make.names(c("a and b", "a-and-b"), unique = TRUE)# "a.and.b" "a.and.b.1"make.names(c("a and b", "a_and_b"), unique = TRUE)# "a.and.b" "a_and_b"make.names(c("a and b", "a_and_b"), unique = TRUE, allow_ = FALSE)# "a.and.b" "a.and.b.1"make.names(c("", "X"), unique = TRUE)# 現在は "X.1" "X"; 3.0.2 までの R は "X" "X.1" を与えた

state.name[make.names(state.name) != state.name] # 空白を持つ 10 組

make.unique Make Character Strings Unique

Description

文字列ベクトルの要素を重複するものに系列番号を加えることでユニークにする.

Usage

make.unique(names, sep = ".")

Arguments

names 文字列ベクトル.

sep 重複する名前をその系列番号から分離するのに使われる文字列.

Page 317: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

mapply 317

Details

make.uniqueが使うアルゴリズムは次の性質を持つmake.unique(c(A, B)) == make.unique(c(make.unique(A), B)).

換言すれば,いっときにベクトルに一つの文字列を加えることが出来,毎回それをユニークにし,そして全ての文字列に一度に make.uniqueを提供したのと同じ結果を得る.

文字列ベクトル Aが既にユニークなら, make.unique(c(A, B))は Aを保存する.

Value

重複要素を変更した namesと同じ長さの文字列ベクトルで,現在のロケールのエンコーディングを持つ.

Author(s)

Thomas P. Minka

See Also

make.names

Examples

make.unique(c("a", "a", "a"))make.unique(c(make.unique(c("a", "a")), "a"))

make.unique(c("a", "a", "a.2", "a"))make.unique(c(make.unique(c("a", "a")), "a.2", "a"))

rbind(data.frame(x = 1), data.frame(x = 2), data.frame(x = 3))rbind(rbind(data.frame(x = 1), data.frame(x = 2)), data.frame(x = 3))

mapply Apply a Function to Multiple List or Vector Arguments

Description

mapplyは sapplyの多変量バージョンである.. mapplyは FUNを各 . . .引数の最初の要素,二番目の要素,三番目の要素,等に適用する.引数は必要ならリサイクルされる.

Usage

mapply(FUN, ..., MoreArgs = NULL, SIMPLIFY = TRUE,USE.NAMES = TRUE)

Arguments

FUN 低起用される関数で,match.funで見つけられる.

... ベクトル化される引数(狭義に正の長さを持つベクトルまたはリスト).‘詳細’も見よ.

MoreArgs FUNへの追加の引数.

Page 318: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

318 margin.table

SIMPLIFY 論理値又は文字列;結果をベクトル,行列又は高次元の配列に縮約しようと試みる;sapplyの simplify引数を見よ.

USE.NAMES 論理値;もし最初の . . .引数が名前を持てば名前を使う.もしくはそれが文字列ベクトルならば文字列を名前として使う.

Details

mapplyは MoreArgs中で与えられた引数が後に続く ... の値に対して FUNを呼び出す (どれかが長さゼロでない限り最長の物の長さまでリサイクルされる).

呼び出し中の引数はもし ... や MoreArgsが名前付きならば名前が付けられる.

... 中にはクラス付きの引数が認められ,そしてそれらの部分抽出と lengthメソッドが使われる.

Value

リスト,もしくは SIMPLIFY = TRUEに対してはベクトル,配列又はリスト.

See Also

mapply()がモデルにしている sapply.

二つの引数の全ての組み合わせにベクトル化関数を適用する outer.

Examples

mapply(rep, 1:4, 4:1)

mapply(rep, times = 1:4, x = 4:1)

mapply(rep, times = 1:4, MoreArgs = list(x = 42))

mapply(function(x, y) seq_len(x) + y,c(a = 1, b = 2, c = 3), # 名前が最初c(A = 10, B = 0, C = -10))

word <- function(C, k) paste(rep.int(C, k), collapse = "")utils::str(mapply(word, LETTERS[1:6], 6:1, SIMPLIFY = FALSE))

margin.table Compute table margin

Description

配列形式の分割表に対し,与えられた添字に対する項目の和を計算する.

Usage

margin.table(x, margin = NULL)

Arguments

x 配列.

margin 添字 (行には 1等.)

Page 319: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

mat.or.vec 319

Details

これは実際は新人用にパッケージ化された apply(x, margin, sum)に過ぎないが,もしmarginが長さゼロならば sum(x)が得られる.

Value

関連する周辺テーブル.xのクラスは総和ケースを除き出力テーブルにコピーされる.

Author(s)

Peter Dalgaard

See Also

prop.tableと addmargins.

Examples

m <- matrix(1:4, 2)margin.table(m, 1)margin.table(m, 2)

mat.or.vec Create a Matrix or a Vector

Description

mat.or.vecは ncが 1より大きければ,行数 nrで列数 ncのゼロ行列を作る.もし ncが1に等しければ長さ nrのベクトルを作る.

Usage

mat.or.vec(nr, nc)

Arguments

nr, nc 行数と列数.

Examples

mat.or.vec(3, 1)mat.or.vec(3, 2)

Page 320: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

320 match

match Value Matching

Description

matchはその最初の引数と二番目の引数中の(最初の)マッチの位置のベクトルを返す.

%in%は二項演算子としてのより直感的なインタフェイスで,その左側の被演算項に対するマッチの有無を示す論理値ベクトルを返す.

Usage

match(x, table, nomatch = NA_integer_, incomparables = NULL)

x %in% table

Arguments

x ベクトルか NULL:マッチされるべき値. long vectorがサポートされている.

table ベクトルか NULL:マッチの対象になる値. long vectorがサポートされている.

nomatch マッチが見つからなかった場合に返される値.これは integerに強制変換されることを注意する.

incomparables マッチ不能な値のベクトル. x 中のこのベクトル中の値にマッチする任意の値には nomatch値が付値される.歴史的な理由から FALSEはNULLに等しい.

Details

%in%は現在以下のように定義されている"%in%" <- function(x, table) match(x, table, nomatch = 0) > 0

因子,バイトベクトル,そしてリストは文字列に変換され,それからマッチ前に x とtableは同じ型に変換される(Rの順序 logical < integer < numeric < complex < character中の二つの型の後者)もし incomparablesが正の長さを持てばそれは同じ型に変換される.

リストへに対するマッチングは非常に遅くなる可能性があり,簡単な場合をのぞいて避けることが勧められる.

正確には何が何にマッチするかはある程度定義次第である.全ての型に対し NAは NAにマッチするが他の型にはマッチしない.実数と複素数値に対しては,NaN値は他の任意の NaN値にマッチすると見做されるが,NAとはマッチしない.

%in%が決して NAを返さないという点は if条件で特に有用になる.

もし入力が "bytes"とマークされていれば文字列はバイト列として比較される (Encodingを見よ).

Page 321: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

match.arg 321

Value

xと同じ長さのベクトル.

match: もしマッチがあれば table中の最初のマッチの位置,マッチが無ければ nomatchを与える整数ベクトル.

もし x[i]が table[j]に等しいことがわかれば,返される値の i番目の値は可能な最小の jに対する jである.,もしマッチが見つからなければ,値は nomatchである.

%in%: 論理値ベクトルで,xの各要素に対してマッチがあったかどうかを指示する:従って値は TRUEか FALSEで,決して NAにはならない.

References

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

See Also

文字列の(部分)マッチングには pmatch と charmatch,関数の引数のマッチングにはmatch.arg等. findIntervalは同じように位置のベクトルを返すが,正確なマッチよりは区間中の個数を見つける.

%in%の S互換な同値物は is.element.

Examples

## 二つの集合の共通部分は match() を使って定義できる:## 簡単なバージョン:## intersect <- function(x, y) y[match(x, y, nomatch = 0)]intersect # 基本パッケージ中の R 関数はもう少し注意深いintersect(1:10, 7:20)

1:10 %in% c(1,3,5,9)sstr <- c("c","ab","B","bba","c",NA,"@","bla","a","Ba","%")sstr[sstr %in% c(letters, LETTERS)]

"%w/o%" <- function(x, y) x[!x %in% y] #-- y を除いた x(1:10) %w/o% c(3,7,12)## setdiff() は非常に似ており典型的により意味がある:

c(1:6,7:2) %w/o% c(3,7,12) # -> 重複を保存setdiff(c(1:6,7:2), c(3,7,12)) # -> ユニークな値

match.arg Argument Verification Using Partial Matching

Description

match.argは argを choicesで指定される候補値のテーブルに対してマッチする.ここで NULLは最初のものを取ることを意味する.

Usage

match.arg(arg, choices, several.ok = FALSE)

Page 322: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

322 match.arg

Arguments

arg 文字列ベクトル(several.okが TRUEで無い限り長さ 1)か NULL.

choices 候補値の文字列ベクトル.

several.ok argが一つ以上の要素を持っても良いかどうかを指示する論理値.

Details

match.arg(arg)の引数が一つの形式に於いて,選択はそこから match.argを呼び出した関数の形式的引数 argに対する既定設定から得られる.(既定の引数マッチングは argをchoicesに設定するのでこれは ‘several.okが TRUEでない限り長さは1’規則の例外として認められ,そして最初の引数を返す.)

マッチングは pmatchを使ってなされるので,argは省略可可能である.

Value

もしマッチが一つあれば,正確かユニーク部分マッチの非省略形バージョン.さもなければ,もし several.okが偽ならば既定に従ってエラーが起こる. several.okが真で argの一つ以上の要素がマッチした時は,全てのマッチの非省略形バージョンが返される.

See Also

pmatch, match.fun, match.call.

Examples

require(stats)## 'switch' に対する例を拡張するcenter <- function(x, type = c("mean", "median", "trimmed")) {type <- match.arg(type)switch(type,

mean = mean(x),median = median(x),trimmed = mean(x, trim = .1))

}x <- rcauchy(10)center(x, "t") # 動作するcenter(x, "med") # 動作するtry(center(x, "m")) # エラーstopifnot(identical(center(x), center(x, "mean")),

identical(center(x, NULL), center(x, "mean")) )

## 一つ以上のマッチを許す:match.arg(c("gauss", "rect", "ep"),

c("gaussian", "epanechnikov", "rectangular", "triangular"),several.ok = TRUE)

Page 323: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

match.call 323

match.call Argument Matching

Description

match.call は全ての指定された引数がそれらの完全な名前で指定された呼び出しを返す.

Usage

match.call(definition = sys.function(sys.parent()),call = sys.call(sys.parent()),expand.dots = TRUE,envir = parent.frame(2L))

Arguments

definition 関数,既定では match.callがその中から呼び出された関数.詳細を見よ.

call callで生成されたもののような, definitionで指定された関数への未評価呼び出し.

expand.dots 論理値.呼び出し中の ... にマッチする引数を含めるか,それとも ...引数のまま残しておくか?

envir もしあれば,そこから call中の ... が回収された環境.

Details

このヘルプページに於ける ‘関数’とはインタープリタ関数 (‘closure’としても知られている)を意味する: match.callはプリミティブな関数をサポートしない (そこでは引数のマッチングは普通位置による).

match.callは最も普通には次の二つの状況で使われる:

• 後で再利用するために記録する:例えば殆どのモデル当てはめ関数は呼び出しをそれらが返すリストの call要素として記録する.この場合既定の expand.dots = TRUEがふさわしい.

• 呼び出しの殆どを別の関数,しばしば model.frame,に渡す.ここでは共通のイディオムは expand.dots = FALSE が使われることで,そしてマッチした呼び出しの... 要素は取り除かれる.別の方法は,lmが行うように,渡される引数を明示的に選択することである.

definitionの指定なしに関数の外部から match.callを呼び出すことはエラーである.

Value

クラス callのオブジェクト.

References

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.

Page 324: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

324 match.fun

See Also

sys.call()は似通っているが,引数の名前を展開しない;

call, pmatch, match.arg, match.fun.

Examples

match.call(get, call("get", "abc", i = FALSE, p = 3))## -> get(x = "abc", pos = 3, inherits = FALSE)fun <- function(x, lower = 0, upper = 1) {

structure((x - lower) / (upper - lower), CALL = match.call())}fun(4 * atan(1), u = pi)

match.fun Extract a Function Specified by Name

Description

関数を引数として取る関数内部で使われると,要求される関数オブジェクトを返すが,他のタイプのオブジェクトへの期待されないマッチングを避ける.

Usage

match.fun(FUN, descend = TRUE)

Arguments

FUN 関数としてマッチする項目:関数,シンボル,または文字列. ‘詳細’を見よ.

descend 論理値;過去の非関数オブジェクトを検索するか.

Details

match.funは呼び出し側の親の中でマッチングを行うため,トップレベルで使われることを意図していない.

もし FUNが関数ならばそれが返される.もしそれがシンボル (例えばバックコートで囲まれた)か長さ1の文字列ならば,呼び出し側の親環境中で getを用いて検索される.もしそれが任意の他のモードならば,先ずシンボルとして呼び出し側の引数を得ることを試み (substituteを二度使い),そしてそれが失敗するとエラーが宣言される.

もし descend = TRUEならば,match.funは与えられた名前を持つ過去の非関数オブジェクトを探す;さもなければ,もし FUNが非関数オブジェクトを指し示していればエラーが生成される.

これは apply, lapply, outer,そして sweepのような基本関数中で使われている.

Value

FUNにマッチする関数,もしくはエラーが生成される.

Page 325: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

MathFun 325

バグ

descend引数は些か誤った名称であり,恐らく実際にはどれからも必要とされない.将来は取り除かれるかもしれない.

これを完全に誤りなしにすることは不可能である.もし関数と同名の長さ1の文字列を含むリストやデータフレームを付加すると,それが使われるかもしれない(名前空間が助けになるかもしれないが).

Author(s)

Peter Dalgaardと Robert Gentleman,Jonathan Rougierによる初期バージョンに基づく.

See Also

match.arg, get

Examples

# get("*") と同じ:match.fun("*")# outer をベクトルで上書きouter <- 1:5try(match.fun(outer, descend = FALSE)) #-> エラー: 関数ではないmatch.fun(outer) # それをとにかく見つけるis.function(match.fun("outer")) # 同じ

MathFun Miscellaneous Mathematical Functions

Description

abs(x)は xの絶対値を,sqrt(x)は xの平方根(の主値)√xを計算する.

名前は Cや Fortrann等の計算機言語に由来する.

Usage

abs(x)sqrt(x)

Arguments

x 数値もしくは複素数値ベクトルや配列.

Details

これらはプリミティブな内部総称的関数である:メソッドを個別に,また Math グループ総称的に書くことが出来る.複素数引数 z (と既定メソッド)に対しては abs(z) ==Mod(z)で sqrt(z) == z^0.5である.

abs(x)は xが整数か論理値ならば整数ベクトルを返す.

S4メソッド

両者は S4総称的で Mathグループ総称的関数のメンバーである.

Page 326: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

326 matmult

References

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

See Also

単純な関数は Arithmetic,対数関数は log,三角関数は sin,特殊数学関数は Special.

プロット注釈における sqrtの使用については ‘plotmath’.

Examples

require(stats) # スプライン関数用require(graphics)xx <- -9:9plot(xx, sqrt(abs(xx)), col = "red")lines(spline(xx, sqrt(abs(xx)), n=101), col = "pink")

matmult Matrix Multiplication

Description

もしそれらが共形ならば二つの行列の積を取る.もしひとつの引数がベクトルならば,それは二つの引数が共形になるように行又は列だけの行列に昇格される.もし双方が同じ長さのベクトルならば(行列としての)内積を返す.

Usage

x %*% y

Arguments

x, y 数値又は複素数値の行列かベクトル.

Details

as.matrixとは異なり,ベクトルが行列に昇格されるときはその名前は行又は列名として使われない.

この演算子は S4総称的であるが S3総称的ではない.S4メソッドは名前 xと yを持つ二つの関数として書かれる必要がある.

Value

倍精度実数もしくは複素数値の行列積.ただ一つのレベルを持つ次元を取り除くにはdropを使う.

Note

もし二つの選択が xと yが共形な次元を持つことを許す時には,R 3.2.0以来ベクトルを1行または 1列の行列とすることがより多くのケースで奨励されている.

Page 327: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

matrix 327

References

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

See Also

行列の クロス 積には典型的には crossprod() と tcrossprod() が好ましい. matrix,Arithmetic, diag.

Examples

x <- 1:4(z <- x %*% x) # スカラー("内")積 (1 x 1 行列)drop(z) # スカラーとして

y <- diag(x)z <- matrix(1:12, ncol = 3, nrow = 4)y %*% zy %*% xx %*% z

matrix Matrices

Description

matrixは与えられた値のセットから行列を作る.

as.matrixはその引数を行列に変えようとする.

is.matrixはその引数が(狭義の)行列かどうかを検査する.

Usage

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)

as.matrix(x, ...)## S3 method for class 'data.frame'as.matrix(x, rownames.force = NA, ...)

is.matrix(x)

Arguments

data オプションのデータベクトル(リストや表現式ベクトルを含む).非原子的なクラス付き Rオブジェクトは as.vectorで強制変換され,全ての属性は捨てられる.

nrow 希望する行数.

ncol 希望する列数.

byrow 論理値.もし FALSE (既定)ならば行列は列で埋められる.さもなければ行列は行で埋められる.

Page 328: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

328 matrix

dimnames 行列に対する次元名属性: NULL か,それぞれ列名と行名を与える長さ2のリスト.空のリストは NULLとして扱われ,長さ1のリストは行名とされる.リストは名前付きでよく,リスト名は次元の名前として使われる.

x Rオブジェクト.

... 他のメソッドに/から渡される追加引数.

rownames.force 結果の行列が文字行名(NULLでなく)を持つべきかどうかを指示する論理値.既定の NAは,もしデータフレームが ‘原子的’な行名を持つか行数がゼロならば行名 NULLを持つ.

Details

もし nrowか ncolのどちらかが与えられないと,dataの長さと他のパラメータからそれを推測することが試みられる.もしどちらも与えられないと列数1の行列が返される.

もし dataの要素が行列を埋めるのに少なすぎれば,xの要素がリサイクル使用される.もし dataの長さがゼロならば適当な型の NAが原子的ベクトルとして (バイトベクトルに対しては 0),リストに対しては NULLが使われる.

is.matrixはもし xが長さ2の次元属性を持つベクトルならば TRUEを返し,さもなければ FALSEを返す.データフレームはこのテストでは行列とされないことを注意する.この関数は総称的である:個別のオブジェクトのクラスを扱うメソッドを書くことが出来る,InternalMethodsを見よ.

as.matrix は総称的である.データフレームに対するメソッドは,もし原子的な列と数値,論理値,複素数値だけがあれば文字列行列を返す.因子には as.vector を,そして他の文字列でない列には formatが適用される.さもなければ通常の強制変換階層(logical < integer < double < complex)が使われる,例えば全てが論理値のデータフレームは論理値行列に変換され,論理値と整数が混在していれば整数行列が返される.

as.matrixに対する既定メソッドは as.vector(x)を呼び出し.従って因子を文字列ベクトルに変換する.

ベクトルを強制変換する際は列数1の行列が作られ, (もしあれば)ベクトルの名前を行列の列名に採用する.

is.matrixはプリミティブな関数である.

行列に対する printメソッドは次元名と添字をもつ矩形のレイアウトを与える.リスト行列に対しては長さが1でない項目はタイプと長さを指示する ‘integer,7’ の型式を持つ.

Note

もし単にベクトルを行列に変換したければ

dim(x) <- c(nx, ny)dimnames(x) <- list(row_names, col_names)

のようにすると xを複製することがない.

References

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

Page 329: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

maxCol 329

See Also

数値行列に変換しようとする data.matrix.

行列は二次元配列の特殊例である.

Examples

is.matrix(as.matrix(1:10))!is.matrix(warpbreaks) # データフレーム,行列ではない!warpbreaks[1:10,]as.matrix(warpbreaks[1:10,]) # メソッド as.matrix.data.frame(.) を使う

## 行名と列名を設定する例mdat <- matrix(c(1,2,3, 11,12,13), nrow = 2, ncol = 3, byrow = TRUE,

dimnames = list(c("row1", "row2"),c("C.1", "C.2", "C.3")))

mdat

maxCol Find Maximum Position in Matrix

Description

行列の各行に対する最大値を与える位置を見つける.タイがあればランダムに決定する.

Usage

max.col(m, ties.method = c("random", "first", "last"))

Arguments

m 数値行列.

ties.method タイをどのように扱うかを指示する文字列.既定では "random";短縮化可能;‘詳細’を見よ.

Details

既定の ties.method = "random"ではタイは無作為に解消される.この場合タイの決定は項目が確率であることを仮定する:相対許容度は 10−5 で,行の最大値(絶対値で,無限は除く)に対する相対許容度である.

もし ties.method = "first"ならば max.colは各行の複数の最大値の最初のものの列数を返し unname(apply(m, 1, which.max))と同値である.同様に ties.method = "last"は可能性として複数ある添字の最後を返す.

Value

各行の最大値の添字で,長さ nrow(m)の整数ベクトル.

References

Venables, W. N. and Ripley, B. D. (2002) Modern Applied Statistics with S. New York: Springer(4th ed).

Page 330: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

330 mean

See Also

ベクトルには which.max.

Examples

table(mc <- max.col(swiss)) # ほとんど "1" と "5", 5 x "2" そして "4" が一回swiss[unique(print(mr <- max.col(t(swiss)))) , ] # 3 33 45 45 33 6

set.seed(1) # 再現可能な例:(mm <- rbind(x = round(2*stats::runif(12)),

y = round(5*stats::runif(12)),z = round(8*stats::runif(12))))

## Not run:[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]

x 1 1 1 2 0 2 2 1 1 0 0 0y 3 2 4 2 4 5 2 4 5 1 3 1z 2 3 0 3 7 3 4 5 4 1 7 5

## End(Not run)## 全ての行最大値の列添字:utils::str(lapply(1:3, function(i) which(mm[i,] == max(mm[i,]))))max.col(mm) ; max.col(mm) # "random"max.col(mm, "first") # -> 4 6 5max.col(mm, "last") # -> 7 9 11

mean Arithmetic Mean

Description

(刈詰め)算術平均に対する総称的関数.

Usage

mean(x, ...)

## Default S3 method:mean(x, trim = 0, na.rm = FALSE, ...)

Arguments

x Rオブジェクト.現在数値/論理値ベクトル,日付,日付・時間そして時間区間オブジェクトに対するメソッドが用意されている.複素数値ベクトルは trim = 0の場合だけ許される.

trim 平均の計算前に xの両端から刈り詰められる観測値の割合(0から 0.5).範囲外の刈詰め値は再近接終端とされる.

na.rm 値 NAを計算前に取り除くかどうかを指示する論理値.

... 他のメソッドに/から渡される追加引数.

Page 331: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

memCompress 331

Value

もし trimがゼロ(既定値)ならば x中の値の算術平均が計算され,長さ1の数値もしくは複素数値ベクトルとして返される.もし xが論理値(数値に変換される),数値そして複素数値のいずれでも無ければ,警告なしに NA_real_が返される.

もし trimがゼロでなければ,対称的に刈詰められた平均が計算される.平均の計算の前に両端から割合 trimの観測値が取り除かれる.

References

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

See Also

weighted.mean, mean.POSIXct,行と列の最大値は colMeans.

Examples

x <- c(0:10, 50)xm <- mean(x)c(xm, mean(x, trim = 0.10))

memCompress In-memory Compression and Decompression

Description

バイトベクトルのメモリ内部での圧縮と解凍.

Usage

memCompress(from, type = c("gzip", "bzip2", "xz", "none"))

memDecompress(from,type = c("unknown", "gzip", "bzip2", "xz", "none"),asChar = FALSE)

Arguments

from バイトベクトル.memCompressに対しては文字列ベクトルは "\n"で分離されてバイトベクトルに変換される.

type 文字列,圧縮のタイプ.恐らく一つの文字に簡略化可能で,既定値は候補者の最初.

asChar 論理値:結果を文字列に変換するか?

Page 332: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

332 memCompress

Details

type = "none"は入力を未変更で渡すが, typeが変数の時は有用かもしれない.

type = "unknown"は適用される圧縮のタイプ(もしあれば)を検出しようと試みる:これは bzip2に対しては常に成功し,そして適当なヘッダがあれば他の形式に対しても成功する.これは gzipプログラムによりファイル (そして gzfileで書かれるファイル)に加えられる ‘マジック’ヘッダー("\x1f\x8b")を自動検出するが, memCompressはそうしたヘッダを加えない.

bzip2圧縮は常にヘッダ ("BZh")を加える.

type = "xz"による圧縮はファイルを xz -9e (‘マジック’ヘッダーを含め)で圧縮するのと同等である:解凍はバージョン 4.999の xzと lzmaのある種のバージョンで圧縮された任意のファイルに対処出来るはずである.現在処理できない他のバージョン,特に‘バイト’ストリーム,もある.

全ての圧縮タイプは入力を展開出来る:"gzip"と "bzip"に対しては最大の展開が知られており,従って memCompressは常に十分な空間を確保できる. "xz"に対しては出力が大きすぎると圧縮が失敗する可能性がある(しかしまずありそうもない).

Value

バイトベクトルか文字列(もし asChar = TRUEなら).

See Also

connections.

データ圧縮の背景については https://en.wikipedia.org/wiki/Data_compression, http://zlib.net/, https://en.wikipedia.org/wiki/Gzip, http://www.bzip.org/, https://en.wikipedia.org/wiki/Bzip2, http://tukaani.org/xz/ そして使われる特定のスキームに関する参考文献は https://en.wikipedia.org/wiki/Xz.

Examples

txt <- readLines(file.path(R.home("doc"), "COPYING"))sum(nchar(txt))txt.gz <- memCompress(txt, "g")length(txt.gz)txt2 <- strsplit(memDecompress(txt.gz, "g", asChar = TRUE), "\n")[[1]]stopifnot(identical(txt, txt2))txt.bz2 <- memCompress(txt, "b")length(txt.bz2)## bzip2 を自動検出できる:txt3 <- strsplit(memDecompress(txt.bz2, asChar = TRUE), "\n")[[1]]stopifnot(identical(txt, txt3))

## xz 圧縮は大きなオブジェクトに対してだけ価値があるtxt.xz <- memCompress(txt, "x")length(txt.xz)txt3 <- strsplit(memDecompress(txt.xz, asChar = TRUE), "\n")[[1]]stopifnot(identical(txt, txt3))

Page 333: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Memory 333

Memory Memory Available for Data Storage

Description

Rがどのように作業空間を管理するか.

Details

Rは可変サイズの作業領域を持つ.(めったに使われないが)その最小サイズを制御するコマンドラインのオプションがあるが,最大サイズを制御する物は無い.

Windowsではオプション ‘--max-mem-size’ (または環境変数 R_MAX_MEM_SIZE)が最大の(仮想)メモリ容量を設定する:可能な最小量は32Mである.これは他のプロセスをリソース不足にする可能性がある過大なメモリ量の確保の試みを防ぐことを意図している.memory.limitも見よ.

Rは固定サイズと可変サイズのオブジェクトに対して別個の領域を管理する.これらの最初は cons cellsの配列として確保される (リスプのプログラマはこれが何か知っているであろう,そうでない者はこれらを言語自体のの構成ブロック,構文解析木,等と考えれば良い).そして二つ目は各々8バイトの ‘Vcell’のヒープで実現される.各 cons cellはRの32ビット版では28バイトを占め,64ビット版では(普通) 56バイトを占める.

(現在の)既定値は初期設定で 350kの cons cellsと 6Mbのベクトルヒープである.これらの領域は実際は初めに確保されるわけではないことを注意しよう.そうではなくこれらの値はガベージコレクションを引き起こすサイズである.これらの値は R起動時にコマンドラインのオプション ‘--min-nsize’と ‘--min-vsize’で設定(もしくはもしそれらを使わなければ,環境変数 R_NSIZEと R_VSIZE)できる.それ以降 Rは使用に応じて領域を拡大・縮小していくが,決して初期値以下には小さくならない.

Rがガベージコレクションにどれだけの時間を費やすかは,これらの初期設定と,メモリがいっぱいになった時不要なメモリを開放するためのガベージコレクションと領域を増加させることの間でメモリマネージャが行うトレードオフに依存する.増加に対して使われる戦略は環境変数 R_GC_MEM_GROWを0から3までの間の整数に設定することで指定できる.この値は起動時に読み取られる.大きな値は塊をより積極的に増加させ,それによってガベージコレクションの時間を減少させるがより多くのメモリを使用する.

現在のメモリ消費量(使用されるヒープと cons cellの数とメガバイト量)は Rのプロンプトに gc()とタイプすれば分かる. gcinfo(TRUE)であれば,自動的なガベージコレクションは常にメモリ使用統計量をプリントする.

コマンドラインのオプション ‘--max-ppsize’はポインタ防御スタックの最大サイズを制御する.既定では50000であるが,深い再帰や大規模で複雑な計算をするために増やすことが出来る.ガベージコレクションの一部は完全な保存されたポインタ防御スタックを巡るため,サイズが大きくなると遅くなることを注意しよう.現在受け付けられる最大の値は500000である.

See Also

より多くのコマンドラインのオプションについては An Introduction to R.

デザイン上の限界については Memory-limits.

ガベージコレクションとすべてのメモリ使用量に関する情報については gc, Rオブジェクト aの(近似的)サイズについては object.size(a). cons cellのプロファイリングについては memory.profile.

Page 334: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

334 Memory-limits

Windowsでの全メモリの監視については memory.size,現在の限界については memory.limit.

Memory-limits Memory Limits in R

Description

Rはオブジェクトを仮想メモリに保持する.このヘルプファイルは大規模オブジェクトの現在のデザイン限界を説明する:これは Rを32ビットと64ビットのどちらで構築したかで異なる.

Details

現在 Rは32ビットと64ビットのOS上で稼働しており.殆どの64ビット OS(Linux, Solaris,Windowsそして OS Xを含む)は Rの32ビットと64ビット版のどちらも動かすことが出来る.メモリ限界は主に構築次第であるが, Windowsの Rの32ビット版はまた基礎にあるOSのバージョンにもよる.

Rはすべてのオブジェクトを仮想メモリ中に保持し,すべてのオブジェクトにより使用可能なメモリ量には限界がある:

• ヒープメモリのサイズと cons cellの数には上限があるかもしれない – Memoryを見よ–しかし普通は設けられていない.

• Rの実行プログラム等の単一プロセスの(ユーザ)アドレス空間に制限がある.これはシステム固有であり,実行プログラムに依存する可能性がある.

• 環境が単一のプロセスが利用可能なリソースに限界を課す可能性がある:R のWindows版がそれを直接に行う.

cannot allocate vector of sizeで始まるメッセージは,サイズがプロセスのアドレス空間を超えたか,よりありそうなこととしてシステムがメモリを提供できなかったかで,メモリを獲得するのに失敗したことを意味する. 32ビット版構築では,利用可能なフリーメモリが十分あるが,それをアドレス空間の連続するブロックにマップ出来るほどではないことが起こりえる.

個々のオブジェクトに関する限界もある.保管空間はアドレス限界を超えることはできず,もしそれを越えようとすると cannot allocate vector of lengthで始まるエラーメッセージが出る.

一つの文字列中のバイト数は 231 − 1 ≈ 2 109 に制限されているので,それがまた一つの配列の各次元の限界である.

ユニックス

アドレス空間の限界はシステム固有である;32ビットOSは 4Gbを超えないという限界を課す:しばしばこれは3Gbである. 64ビットOS上で32ビットプログラムを実行する場合も同じような限界がある: 64ビットプログラムは本質的に無限のシステム固有限界を持つであろう(例えば x86_64 CPU上の Linuxに対しては128Tbとなる).

単一プロセスで利用可能なリソースの限界をどのようにして課すかについては limitやulimit のような命令を見よ.例えばプロセスをCPU呼び出し時間を10分で仮想メモリを(約)4Gbにするには. bashユーザは

ulimit -t 600 -v 4000000

Page 335: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

memory.profile 335

を, cshを使っていれば

limit cputime 10m limit vmemoryuse 4096m

とすることが出来る. (使用するRAMを設定する他のオプションがあるが,一般に勧められない.)

Windows

32ビット Windows ではアドレス空間の限界は,OSの既定値がより多く(3Gbが上限)に設定されていなければ2Gbである. https://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspxと https://msdn.microsoft.com/en-us/library/bb613473(VS.85).aspx を見よ. Windows の殆どのバージョンでは R の32ビット版の限界は4Gbである.最も古いものではこれは2Gbであった.Rの64ビット版に対する(OSが課している)限界は8Tbである.

Windowsではアドレス空間の真ん中に事前確保されるため, 64ビットの Windows でも32ビット版 Rで一つのベクトルに2Gbものメモリを確保することは普通不可能である.Windows下では,OSが方法を提供していないため,単一のセッションが使用可能な全メモリ配置に Rは限界を設ける: memory.sizeと memory.limitを見よ.

See Also

Rオブジェクト aの(近似的な)サイズは object.size(a).

memory.profile Profile the Usage of Cons Cells

Description

SEXPREC型による consセルの使用をリストする.

Usage

memory.profile()

Details

現在の型とそれらの使用量はインクルードファイル ‘Rinternals.h’ にリストされている.

Value

型で名前がついたカウントのベクトル.型の説明は typeofを見よ.

See Also

consセルの全体出来な使用法については gc. Rprofmemと tracememは特定のコードやオブジェクトのメモリプロアイルを許すが,コンパイル時に使用可能にする必要がある.

Examples

memory.profile()

Page 336: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

336 merge

merge Merge Two Data Frames

Description

二つのデータフレームを共通の列や行で併合する.又はデータベースの join演算の他のバージョンを行う.

Usage

merge(x, y, ...)

## Default S3 method:merge(x, y, ...)

## S3 method for class 'data.frame'merge(x, y, by = intersect(names(x), names(y)),

by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,sort = TRUE, suffixes = c(".x",".y"),incomparables = NULL, ...)

Arguments

x, y データフレーム,もしくはそれに強制変換されるもの.

by, by.x, by.y 併合に使われる列の指定, ‘詳細’を見よ.

all 論理値;all = Lは all.x = Lと all.y = Lの短縮形である.ここで Lは TRUEか FALSE.

all.x 論理値;もし TRUEなら y中にマッチする行がない x中の各列毎に一つ余分の行が出力に付け加えられる,これらの行は普通 yからの値で埋められる列中に NAを持つ.既定値は FALSEで,従って xと yの双方からのデータだけが出力中に含められる.

all.y 論理値;all.xと同様.

sort 論理値.結果は by列に関してソートすべきか?

suffixes 長さ2の文字列ベクトル.併合に使われなかった(by中に登場した等)結果中の列名をユニークにするために使われる添字を指定する.

incomparables マッチできない値. matchを見よ.これは一つの列に関して併合するために使われることを意図しているので,これらはその列の比較不能な値である.

... メソッドに/から渡される引数.

Details

mergeは総称的関数で,その主要なメソッドはデータフレーム用である:既定メソッドはその引数をデータフレームに強制変換し,そして "data.frame"メソッドを呼び出す.

既定ではデータフレームは双方が共有する列に関して併合されるが,列に関する個別の指定も by.xと by.yにより与えられる.指定した二つのデータフレームにマッチする行が抜き出され一緒に併合される.もしひとつ以上のマッチがあれば,全ての可能なマッチが一つの行毎に寄与する. ‘マッチ’の正確な意味は matchを見よ.

Page 337: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

merge 337

それに関して併合を行う列は名前,数又は論理値ベクトルで指定できる:名前 "row.names"か数 0は行名を指定する.もし名前で指定されると,それは入力中の名前付き列とユニークに一致しなければならない.

もし byか by.xと by.yの双方が長さ 0 (長さゼロのベクトルか NULL)ならば,結果,r,はxと yのカルテジアン積になる,つまり dim(r) = c(nrow(x)*nrow(y), ncol(x) + ncol(y)).

もし all.xが真ならば,xの全てのマッチしないケースも同様に結果に付け加えられる.yの対応する列は NAで埋められる;all.yに対しても同様である.

もしデータフレーム中の併合に使われなかった列は任意の共通名を持つ.これらは結果の名前ををユニークにするため添字(既定で ".x"と ".y")を加えられる.もしこれが不可能ならばエラーが起きる.

アルゴリズムの計算量は回答の長さに比例する.

SQLデータベースの語法では,all = FALSEに対する既定値は natural joinを与え innerjoin の特殊例である. all.x = TRUE の指定は left (outer) join, all.y = TRUE は right(outer) join,そして両方を併せた all = TRUE は (full) outer join と呼ばれる. DBMS はNULLレコードとはマッチせず,Rの incomparables = NAと同値である.

Value

データフレーム.行は既定で共通の列に関して辞書式にソートされているが,sort = FALSEに対しては未指定の順序になる.列は共通の列に x中の残りの列,そして y中の残りの列が続く.もしマッチングが行名を伴えば Row.namesと呼ばれる余分の列が左端に加えられ,全ての場合で結果は‘自動的な’行名を持つ.

Note

これはベクトル風の列を持つデータフレームに使われることを意図している:幾つかの機能は行列を含むデータフレームでも動作するが,全てではない.

現在ロングベクトルは入力として受け入れられないので,従って 2^31個未満の列に制限されている. R 3.2.0以前ではこの制限はまた結果にも適用された (そして 32ビットプラットフォームでは依然そうである).

See Also

data.frame, by, cbind.

mergeメソッドを持つクラスに対しては dendrogram.

Examples

## 意味のあるソート順序を得るために名前の文字列を使うauthors <- data.frame(

surname = I(c("Tukey", "Venables", "Tierney", "Ripley", "McNeil")),nationality = c("US", "Australia", "US", "UK", "Australia"),deceased = c("yes", rep("no", 4)))

books <- data.frame(name = I(c("Tukey", "Venables", "Tierney",

"Ripley", "Ripley", "McNeil", "R Core")),title = c("Exploratory Data Analysis",

"Modern Applied Statistics ...","LISP-STAT","Spatial Statistics", "Stochastic Simulation","Interactive Data Analysis",

Page 338: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

338 message

"An Introduction to R"),other.author = c(NA, "Ripley", NA, NA, NA, NA,

"Venables & Smith"))

(m1 <- merge(authors, books, by.x = "surname", by.y = "name"))(m2 <- merge(books, authors, by.x = "name", by.y = "surname"))stopifnot(as.character(m1[, 1]) == as.character(m2[, 1]),

all.equal(m1[, -1], m2[, -1][ names(m1)[-1] ]),dim(merge(m1, m2, by = integer(0))) == c(36, 10))

## "R core" は作者から抜けておりここだけでみられる:merge(authors, books, by.x = "surname", by.y = "name", all = TRUE)

## 'incomparables' の使用例x <- data.frame(k1 = c(NA,NA,3,4,5), k2 = c(1,NA,NA,4,5), data = 1:5)y <- data.frame(k1 = c(NA,2,NA,4,5), k2 = c(NA,NA,3,4,5), data = 1:5)merge(x, y, by = c("k1","k2")) # NA のマッチmerge(x, y, by = "k1") # NA のマッチ,従って 6 行merge(x, y, by = "k2", incomparables = NA) # 2 行

message Diagnostic Messages

Description

その引数から診断メッセージを生成する.

Usage

message(..., domain = NULL, appendLF = TRUE)suppressMessages(expr)

packageStartupMessage(..., domain = NULL, appendLF = TRUE)suppressPackageStartupMessages(expr)

.makeMessage(..., domain = NULL, appendLF = FALSE)

Arguments

... ゼロかそれ以上の文字列に変換できるオブジェクト (そしてそれらは分離記号なしに繋げられる)か(message用だけ)一つの条件オブジェクト.

domain gettextを見よ.もし NAなら,メッセージは翻訳されない,stop中のノートも見よ.

appendLF 論理値:文字列として与えられたメッセージに新行を加えるか?

expr 評価される表現式.

Page 339: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

missing 339

Details

messageは警告やエラーではない‘単純な’診断メッセージを生成するのに使われるが,しかしながら条件として表現される.警告やエラーとは異なり最後の新行はメッセージの一部分と見做され,オプションである.既定のハンドラーはメッセージを stderr()コネクションに送る.

もじ条件オブジェクトが messageに提供されると,それは唯一の引数で無ければならず,それ以上の引数は警告と共に無視される.

メッセージが処理されている間に muffleMessage再開が利用できる.

suppressMessagesはその表現式を全ての‘単純な’診断メッセージ全てを無視した文脈の中で評価する.

packageStartupMessageはそのメッセージが suppressPackageStartupMessagesにより別個に抑制できる変種である. (これらは依然としてメッセージであり,suppressMessagesにより抑制できる.)

.makeMessage は message, warning そして stop により使われるユーティリティで, ...引数から可能な翻訳(gettextを見よ)と結合(分離記号なしで)によりテキストメッセージを生成する.

See Also

警告とエラーの生成については warningと stop;条件の処理と回復については conditions.recovery.

テキストの自動翻訳については gettext.

Examples

message("ABC", "DEF")suppressMessages(message("ABC"))

testit <- function() {message("testing package startup messages")packageStartupMessage("initializing ...", appendLF = FALSE)Sys.sleep(1)packageStartupMessage(" done")

}

testit()suppressPackageStartupMessages(testit())suppressMessages(testit())

missing Does a Formal Argument have a Value?

Description

missingは値が関数の引数として指定されているかどうかを検査するのに使うことができる.

Usage

missing(x)

Page 340: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

340 mode

Arguments

x 形式的引数.

Details

missing(x)は xが関数に登場してから変更されていない場合だけ信頼できる:特にそれは x <- match.arg(x)の跡では常に偽になる.

下の例は,プロットされる点の x, y座標を与えるベクトルの対と,それらの添字に対してプロットされる y値を与える単一のベクトル,のどちらででも動作するプロット関数の書き方を示している.

現在 missingは引数を定義する関数の直接の本体中でのみ使え,入れ子になった関数の本体や局所的な呼び出しの中では使えない.これは将来変わるかもしれない.

これは‘特殊な’プリミティブ関数である:それはその引数を評価してはならない.

References

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

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.

See Also

引数表現式については substitute;データ中の欠損値については NA.

Examples

myplot <- function(x, y) {if(missing(y)) {

y <- xx <- 1:length(y)

}plot(x, y)

}

mode The (Storage) Mode of an Object

Description

オブジェクトの保管モードを得る,設定する.

Usage

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

Page 341: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

mode 341

Arguments

x 任意の Rオブジェクト.

value オブジェクトの希望のモードか ‘保管モード’ (型)を与える文字列.

Details

modeと storage.modeのどちらもオブジェクトの(保管)モードを与える文字列を返す—しばしば同じ—,どちらも typeof(x)の出力に依存している,下の例を見よ.

mode(x) <- "newmode"はオブジェクト xの modeを newmodeに変換する.これは適当なas.newmode 関数が存在する時だけサポートされている.例えば "logical", "integer","double", "complex", "raw", "character", "list", "expression", "name", "symbol"そして"function".属性は保存される(しかし以下を見よ).

storage.mode(x) <- "newmode"は mode<-のより効率的なプリミティブ版で,内部タイプ(typeofを見よ)の "newmode"に対して動作するが "single"は例外である.属性は保存される.

Rでは保管モードとしては "single"は擬似モードであり, modeや storage.modeでは報告されない:これを調べるには attr(object, "Csingle")を使う.しかしながら mode<-はモード "single"を設定するのに使え,実際のモードを "double"に設定し "Csingle"属性を TRUEに設定する.他のモードへの設定はこの属性を取り除く.

(下の例のように)ある種の呼び出しは S互換なモード "("を持つことを注意する.

モード名

モードは型と同じ名前のセットを持つ(typeofを見よ).例外は

• 型 "integer"と "double"は "numeric"として返される.

• 型 "special"と "builtin" "function"として返される.

• 型 "symbol"はモード "name"と呼ばれる.

• 型 "language"は "("又は "call"として返される.

References

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

See Also

Rの内部モードについては typeof. attributes.

Examples

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(parse(text = x)))mex3 <- t(sapply(lex3,

function(x) c(typeof(x), storage.mode(x), mode(x))))

Page 342: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

342 NA

dimnames(mex3) <- list(cex3, c("typeof(.)","storage.mode(.)","mode(.)"))mex3

## これはまた 'pi' の局所的コピーを作る:storage.mode(pi) <- "complex"storage.mode(pi)rm(pi)

NA Not Available / Missing Values

Description

NA は欠損値を指示する長さ1の論理定数である. NA はバイト型を除くすべての他の型に強制変換可能である.他にも欠損値を意味する他の原子的ベクトル型の定数NA_integer_, NA_real_, NA_complex_そして NA_character_がある:これら全ては Rの予約語である.

総称的関数 is.naはどの要素が欠損しているかを指示する.

総称的関数 is.na<-は要素を NAに設定する.

総称的関数 anyNAは any(is.na(x))を可能性としてより速い仕方で実装する(特に原子的ベクトルに対して).

Usage

NAis.na(x)anyNA(x, recursive = FALSE)

## S3 method for class 'data.frame'is.na(x)

is.na(x) <- value

Arguments

x テストされる Rオブジェクト; is.naに対する既定のメソッドは原子的ベクトル,リスト,そして対リストを処理する:anyNAに対するそれはまた NULLを処理する.

recursive 論理値: anyNAをリストと対リストに再帰的に適用するか?

value xと一緒に使うための適当な添字ベクトル.

Details

文字型の NAは文字列 "NA"とは異なる.欠損文字列を正確に指定したいプログラマーはNA_character_ ("NA"ではなく)を使うべきである.または is.na<-を使い要素に NAを設定する.

is.naと anyNAは総称的である:オブジェクトの特定のクラスを処理するメソッドを書くことが出来る, InternalMethodsを見よ.

関数 is.na<-は欠損性を設定する安全な方法を提供出来る.例えば,それは因子に対しては異なった挙動をする.

Page 343: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

NA 343

NAを使った数値計算の結果は普通 NAになる.可能な例外は NaNが含まれる時で,結果はどちらにもなりうる.論理計算は NAを欠損した TRUE/FALSE値として扱い,もし表現式が NA被演算項に依存しなければ TRUEや FALSEを返す可能性がある.

anyNAに対する既定メソッドはクラスや NULL無しの原子的ベクトルを処理する.クラスを持つオブジェクト,そして recursive = FALSEならば,リストや対リストに対してはany(is.na(x)を呼び出す.

Value

原子的なベクトルに適用された is.naの既定メソッドは,その引数 xと同じ長さの論理値ベクトルを返す, NAとマークされた要素に対しては TRUEを含む.もしくは数値または複素数値ベクトルに対しては NaN,さもなければ FALSEを返す. (複素数値は,その実部か虚部のどちらかが NAまたは NaNの時 NAと見做される.)属性 dim, dimnamesそしてnamesは結果にコピーされる.

既定メソッドはまたリストや対リストに対しても動作する: is.na に対しては,要素が長さ1の原子的ベクトルでベクトルの単一の要素が NA か NaN と見做されない限り,結果は要素毎に偽となる. (要素のクラスに対する任意の is.na メソッドは無視されることを注意する). anyNA(recursive = FALSE) は is.na と同じ動作をする;anyNA(recursive = TRUE)は anyNAを各要素に(選択適用されたメソッドとともに)適用する.

is.naに対するデータフレームのメソッドはデータフレームと同じ次元を持つ論理値行列を返す.そして次元名はデータフレームの行と列名から取られる.

anyNA(NULL)は間違いである:is.na(NULL)は警告付きで logical(0)になる.

References

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

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.

See Also

NaN, is.nan等,そして補助関数 complete.cases.

メソッド関数が欠損値を処理するように調整する仕方については na.action, na.omit,na.fail.

Examples

is.na(c(1, NA)) #> FALSE TRUEis.na(paste(c(1, NA))) #> FALSE FALSE

(xx <- c(0:4))is.na(xx) <- c(2, 4)xx #> 0 NA 2 NA 4anyNA(xx) # TRUE

# 論理演算子には NA を返さないものがあるc(TRUE, FALSE) & NAc(TRUE, FALSE) | NA

## わかりやすいケースで速度の差を計る:## 差はプラットフォームに依存する,殆どの場合3倍

Page 344: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

344 name

x <- 1:10000; x[5000] <- NaN # x を倍精度実数に強制変換if(require("microbenchmark")) { # すべてのプラットフォームで確実に動作するわけではない

print(microbenchmark(any(is.na(x)), anyNA(x)))} else {

nSim <- 2^13print(rbind(is.na = system.time(replicate(nSim, any(is.na(x)))),

anyNA = system.time(replicate(nSim, anyNA(x)))))}

## anyNA() は list() とともに動作する:LL <- list(1:5, c(NA, 5:8), c("A","NA"), c("a", NA_character_))L2 <- LL[c(1,3)]sapply(LL, anyNA); c(anyNA(LL), anyNA(LL, TRUE))sapply(L2, anyNA); c(anyNA(L2), anyNA(L2, TRUE))

## ... リスト,そして従ってデータフレームでも:dN <- dd <- USJudgeRatings; dN[3,6] <- NAanyNA(dd) # FALSEanyNA(dN) # TRUE

name Names and Symbols

Description

‘名前’ (‘シンボルとしても知られる’)は Rオブジェクトを名前で参照するための手段である(その名前に結び付けられたオブジェクトの値,もしあれば,ではなく).

as.nameと as.symbolは同じである:これらは引数を名前に変換しようとする.

is.symbolとそれと同値である is.nameは引数が名前かどうかで TRUEや FALSEを返す.

Usage

as.symbol(x)is.symbol(x)

as.name(x)is.name(x)

Arguments

x 強制変換される,又は検査されるオブジェクト.

Details

名前は 10,000バイトに制限されている(R 2.13.0以前のバージョンでは 256バイトであった).

as.nameは最初その引数を内部的に文字列ベクトルに変換する(従って as.characterに対するメソッドは使われない).それから最初の要素を取り上げ,それが ""でない限りその名前のシンボルを返す(もし要素が NA_character_なら名前は `NA`になる).

as.nameは as.vector(x, "symbol")として実装されているので,総称的関数 as.vectorに対するメソッドを選択適用する.

is.nameと is.symbolはプリミティブな関数である.

Page 345: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

names 345

Value

as.nameと as.symbolに対しては型 "symbol" (typeofを見よ)の Rオブジェクト.

is.nameと is.symbolに対しては長さ1の論理値ベクトルで,値 TRUEか FALSEを持つ.

Note

用語 ‘シンボル’は Rのバックグラウンドである LISP由来であり,一方 ‘名前’はこれに対する標準 S用語である.

References

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

See Also

call, is.language. 内部オブジェクトのモードについては typeof.

‘シンボル’の別の使い方については plotmath.

Examples

an <- as.name("arrg")is.name(an) # TRUEmode(an) # 名前typeof(an) # シンボル

names The Names of an Object

Description

オブジェクトの名前を得る,又は設定する関数.

Usage

names(x)names(x) <- value

Arguments

x Rオブジェクト.

value 最大 xと同じ長さの文字列ベクトル.又は NULL.

Page 346: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

346 names

Details

namesは総称的なアクセス関数であり,names<-は総称的な置き換え関数である.既定のメソッドはベクトル(リストを含む)や対リストの "names"属性を取得したり設定したりする.

環境 envに対しては names(env)は names(as.list(env, all.names = TRUE))であり,対応するリストの名前を返す.これはまた ls(env, all.names = TRUE, sorted = FALSE)でも得られる.もし環境がハッシュテーブルとして使われていると names(env)はその“キー”である.

もし valueが xより短いと,それは文字 NAで xの長さまで拡大される.

一般的な規則を使い名前属性の一部分だけを更新することが出来る:下の例を見よ.これはそこでの表現式が z <- "names<-"(z, "[<-"(names(z), 3, "c2"))のように評価されることから動作する.

名前 ""は特殊である:これはベクトル(原子的か総称的)の要素に伴う名前がないことを指示するのに使われる. ""による添字操作はどれともマッチしない(名前を持たない要素にすら).

名前は文字 NAでも良いが,そうした名前は決してマッチされることはなく混乱を招きやすい.

双方はプリミティブ関数である.

Value

namesに対しては NULLか xと同じ長さの文字列ベクトル. (NULLはオブジェクトが名前を持たないか,名前を持てないような型のオブジェクトの時与えられる.)環境に対しては長さは環境中のオブジェクトの数であるが,名前の順序は任意である.

names<-に対しては更新されたオブジェクト. (names(x) <- valueの値は付値のそれ,value,であり,左辺側からの返り値ではないことを注意する.)

Note

ベクトルに対しては,名前は可能な値に制限がある属性の一つである.対リストに対しては,名前はタグであり文字列ベクトルから/へ変換可能である.

1次元配列に対しては名前属性は実際には dimnames[[1]]である.

形式的クラスを持つ,つまり “S4”,オブジェクトは典型的に slotNames()を持つ(そしてnames()は無い).

References

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

See Also

slotNames, dimnames.

Examples

# island データセットの名前属性をプリントするnames(islands)

# 名前属性を取り除く

Page 347: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

nargs 347

names(islands) <- NULLislandsrm(islands) # 作られたコピーを抹消

z <- list(a = 1, b = "c", c = 1:3)names(z)# 三番目の要素の名前だけを変更する.names(z)[3] <- "c2"z

z <- 1:3names(z)## 一つの名前だけを付値names(z)[2] <- "b"z

nargs The Number of Arguments to a Function

Description

関数本体内で使われると nargsはこの関数に与えられた引数の数を返す.ブランクにされている位置引数も含まれる.

Usage

nargs()

Details

カウントは空(欠損)引数も含むため,foo(x,,z) は三つの引数を持つとされる(‘例’を見よ).これはかなり間接的な仕組みで起こるため,例えば x[]は二つの引数を持つと考えられる `[.some_method`(x, )への呼び出しを選択適用するかもしれない.

これはプリミティブな関数である.

References

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

See Also

args, formalsそして sys.call.

Examples

tst <- function(a, b = 3, ...) {nargs()}tst() # 0tst(clicketyclack) # 1 (存在しなくても)tst(c1, a2, rr3) # 3

Page 348: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

348 nchar

foo <- function(x, y, z, w) {cat("call was ", deparse(match.call()), "\n", sep = "")nargs()

}foo() # 0foo(, , 3) # 3foo(z = 3) # 1, これは同じ呼び出しであるが

nargs() # 実際には意味がない

nchar Count the Number of Characters (or Bytes or Width)

Description

ncharは引数として文字列ベクトルを取り,xの対応する要素のサイズを含むベクトルを返す.

nzchar は文字列ベクトルの要素が空でない文字列かどうかを見つける高速な方法である.

Usage

nchar(x, type = "chars", allowNA = FALSE, keepNA = FALSE)

nzchar(x, keepNA = FALSE)

Arguments

x 文字列ベクトル,又は文字列ベクトルに変換できるベクトル.因子を与えるとエラーになる.

type 文字列:c("bytes", "chars", "width")のどれかと部分マッチングされる.‘詳細’を見よ.

allowNA 論理値:不正な多バイト文字列や "bytes"でエンコードされた文字列に対しては NAを返すべきか (エラーにするよりは)?

keepNA 論理値:x が NA なら NA を返すべきか? もし偽ならば(暗黙又は明示的に) nzchar()に対する既定では,そして Rバージョン ≤ 3.2.xに対しては, nchar()は 2を返す.なぜならこれは文字列が出力に書き込まれるときに使われるプリント文字数だからである.そして nzchar()は TRUEになる. Rバージョン 3.3.0以降,nchar()に対してだけ,既定は NAに成り,これは typeが "width"で無い限り keepNA = TRUEを使うことを意味する. Rバージョン ≤ 3.2.0.では(暗黙のうちに) FALSEに固定されていた.

Details

文字列の‘サイズ’は(引数の型に応じて)次の三つの方法で計ることができる:

bytes 文字列を保管するのに必要なバイト数 (それと C ではカウントされない行終結子).

chars 人間が読み取れる文字数.

Page 349: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

nchar 349

width catが文字列を等幅フォントでプリントする時に使われる列数.もしこれが計算できなければ charsと同じ.

これらはしばしば同じで,単バイトロケールではほとんど常に同じになる(しかしながらtypeは keepNA = NAに対する NAの扱いに影響するかもしれないことを注意する).多バイト文字系列では最初の二つには差があるかもしれない,例えば UTF-8ロケール中.

as.characterの既定メソッドの内部的同値物は xに関して操作される(従ってメソッドの選択適用は無い).もしベクトルでないオブジェクトを操作したければそれらを deparseを通じて渡すことが必要になる.

Value

ncharに対しては各要素のサイズを与える整数ベクトル.欠損値(つまり NA,言い換えれば NA_character_)に対しては nchar()はもし keepNAが真なら NA_integer_を返す.そして偽ならば文字のプリント数である 2を返す.

type = "width"は(近似的な)ターミナルのフォントを使い各要素をプリントする際に使われる列数を与える.倍幅,ゼロ幅,そして‘複合’文字が考慮される.

もし allowNA = TRUEで UTF-8のような多バイト文字中で不正な要素が検出されると,その文字数と幅は NAになる.さもなければ文字数は非負であるので !is.na(nchar(x, "chars", TRUE))を使って適正さの検査が行える.

"bytes"エンコーディングでマークされた文字列 (Encodingを見よ)はバイト数を持つが,文字数も幅も持たないので,後者の二つのタイプはもし allowNA = TRUEなら NAで,さもなければエラーになる.

nzchar に対しては x と同じ長さの論理値ベクトルで,要素がゼロでない長さを持つ時そしてその時だけ真になる;もし要素が NAなら,keepNAが既定値であるように偽の時nzchar()は真になる.さもなければ NAである.

Note

これは既定では文字列をプリントする時に使われる文字数を与えない. encodeStringを使えばそれを知ることが出来る.文字列が UTF-8としてマークされている箇所では,プリントに於いては UTF-8でないロケールでは ‘<U+2642>’のようにエスケープを使うかもしれないが,文字数と幅は UTF-8で計算される.

‘幅’の概念は等幅フォントに於いてすら曖昧である.ある種の自然言語は結合文字の概念を持っており,二つもしくはそれ以上の文字が結合される:一つの例は "y\u306"で,これは幅が一つの二文字である:連結する文字の幅はゼロとされ,ゼロ幅空白 "\u200b"のような幅がゼロの他の文字もある.

幾つかの東アジア言語は‘幅広’文字を持つ.表意文字であり,これらの言語では ASCIIや幅狭文字と一緒にされると便宜的に二つの列を跨ってプリントされる.問題は計算機が幅広文字を二列でプリントするか一列でプリントするかがフォントに依存し,それに対して西アジアユーザ向けのフォントには二列を,‘ヨーロッパ系’フォントには一列を使うことが普通ではないことである. Unicodeは ASCII文字の ‘全角’バージョンと,カタカナ(日本語)とハングル(韓国)文字に対する‘半角’バージョンを持つ.それから‘西アジアの曖昧なクラス’ (ギリシャ文字,キリル文字,符号,幾つかのアクセント付きのラテン文字等)がある.これらに対しては歴史的な用法は西アジアでは二列,それ以外では一列というものである.そのクラス(そして他のもの)中の文字に対する ncharが見積もる幅はロケールに依存し,ある種の OS (特にWindows)に関しては幾つかの西アジアロケールを除いて1である.

制御文字は幅がゼロとされる.

Page 350: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

350 nlevels

References

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

Unicode Standard Annex #11: East Asian Width. http://www.unicode.org/reports/tr11/

See Also

プロット用に文字列の幅を与えるには strwidth; paste, substr, strsplit

Examples

x <- c("asfef", "qwerty", "yuiop[", "b", "stuff.blah.yech")nchar(x)# 5 6 6 1 15

nchar(deparse(mean))# 18 17 <-- mean が base::mean と異ならない限り

x[3] <- NA; xnchar(x, keepNA= TRUE) # 5 6 NA 1 15nchar(x, keepNA=FALSE) # 5 6 2 1 15stopifnot(identical(nchar(x, "w", keepNA = NA),

nchar(x, keepNA = FALSE)),identical(is.na(x), is.na(nchar(x, keepNA=NA))))

nlevels The Number of Levels of a Factor

Description

引数が持つ水準数を返す.

Usage

nlevels(x)

Arguments

x オブジェクト,普通因子.

Details

これは普通因子に適用されるが,他のオブジェクトも水準を持つことが出来る.

実際の因子の水準は(もし存在すれば) levels関数で得られる.

Value

levels(x)の長さ.もし xが水準数を持たなければゼロ.

See Also

levels, factor.

Page 351: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

noquote 351

Examples

nlevels(gl(3, 7)) # = 3

noquote Class for ‘no quote’ Printing of Character Strings

Description

文字列を引用符なしにプリントする.

Usage

noquote(obj)

## S3 method for class 'noquote'print(x, ...)

## S3 method for class 'noquote'c(..., recursive = FALSE)

Arguments

obj 任意の Rオブジェクト,典型的には文字列ベクトル.

x クラス "noquote"のオブジェクト.

... printのような次のメソッドに渡されるオプション.

recursive 総称的な c関数との互換性のため.

Details

noquote はその引数をクラス "noquote" のオブジェクトとして返す.c() に対するメソッドと,部分抽出でクラス属性が失われないことを保証する添字メソッド ("[.noquote")がある.プリントメソッド (print.noquote) は文字列を引用符無しでプリントする("...").

これらの関数はユーティリティとして,また (S3)クラスとオブジェクト指向プログラミングの例として存在する.

Author(s)

Martin Maechler <[email protected]>

See Also

methods, class, print.

Page 352: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

352 norm

Examples

lettersnql <- noquote(letters)nqlnql[1:4] <- "oh"nql[1:12]

cmp.logical <- function(log.v){

## 目的:論理値のコンパクトなプリントlog.v <- as.logical(log.v)noquote(if(length(log.v) == 0)"()" else c(".","|")[1 + log.v])

}cmp.logical(stats::runif(20) > 0.8)

norm Compute the Norm of a Matrix

Description

x の行列ノルムを LAPCK を使って計算する.ノルムの種類は type の値で決まる 1ノルム("O"),無限大ノルム("I"),フロベニウスノルム("F"),行列要素の絶対値の最大値("M"),もしくは“スペクトル”または "2"ノルム.

Usage

norm(x, type = c("O", "I", "F", "M", "2"))

Arguments

x 数値行列;Matrixのようなパッケージは更に多くの norm()メソッドを定義していることを注意する.

type 文字列,計算するノルムの種類を指示する.

"O", "o"又は "1" 1ノルムを指示する (列和の絶対値の最大値);"I"又は "i" 無限大ノルム (行和の絶対値の最大値);"F"又は "f" フロベニウスノルムを指示する (xをベクトルとみなしたユークリッドノルム);

"M"または "m" xの全ての要素の絶対値の最大値;そして

"2" “スペクトラル”又は2ノルム, xの最大特異値(svd).

既定値は "O".type[1]の最初の文字だけが使われる.

Details

norm()の baseパッケージのメソッドは Lapack関数 dlangeを呼び出す.

1,無限大そして "M"ノルムはフロベニウスノルムより高速に計算できる.

基礎にある LAPCKコードからの不成功の結果は正のエラーコードを与える:これらはFORTRANコードの詳しい調査によってのみ解釈できる.

Value

行列ノルムで非負数値.

Page 353: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

normalizePath 353

Source

norm = "2"を除いて LAPACKルーティン DLANGE.

LAPACKは http://www.netlib.org/lapackにある.

References

Anderson, E., et al (1994). LAPACK User’s Guide, 2nd edition, SIAM, Philadelphia.

See Also

(逆)条件数については rcond.

Examples

(x1 <- cbind(1, 1:10))norm(x1)norm(x1, "I")norm(x1, "M")stopifnot(all.equal(norm(x1, "F"),

sqrt(sum(x1^2))))

hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }h9 <- hilbert(9)## ノルムの全ての5タイプ:(nTyp <- eval(formals(base::norm)$type))sapply(nTyp, norm, x = h9)

normalizePath Express File Paths in Canonical Form

Description

ファイルパスをプラットフォームに対する標準系に変換し,それらをユーザが理解できる形で提示するので相対と絶対パスを比較できる.

Usage

normalizePath(path, winslash = "\\", mustWork = NA)

Arguments

path ファイルパスの文字列ベクトル.

winslash Windowsで使われる分離記号 –他では無視される. c("/", "\\")のどれかである必要がある.

mustWork 論理値:もし TRUEなら,もし結果が決定できなければエラーが与えられる;もし NAならば警告.

Page 354: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

354 NotYet

Details

チルド展開(path.expandを見よ)が pathsに関してされる.

Unix 風プラットフォームがそれをサポートしていれば,これはパスを標準形の絶対パス(‘./’, ‘../’そしてシンボリックリンクが無い)に変換する.これは POSIXシステム関数 realpathに依存している:もしプラットフォームがそれを持たなければ(現在の例は知らない)結果は絶対パスであるが標準形ではないかもしれない. realpathを使ったとしても標準形はユニークではないかもしれない.例えばハードリンクや多重マウントの場合である.

Windowsではこれは相対パスを絶対パスに変換し,パス要素の短縮名を長い名前に変換し,そして分離記号を winslashで指定されたものにする.それは大・小文字を区別せずにパスにマッチし,標準ケースを返す.現在のロケールで不正な UTF-8でエンコードされたパスを使うことが出来る.

mustWork = FALSEはメッセージ中で使うためにパスを表現するのに有用である.

Value

文字列ベクトル.

もし入力が実在のパスでなければ結果はシステム依存である( mustWork = TRUEで無い限り,その場合はエラーになるはずである).それは対応するパス要素かそれを絶対パスに変換したものになる.

絶対パスへの変換は多くの理由から失敗する可能性がある.最も普通の理由は

• ファイルパスの一つ以上の成分が存在しない.

• 最後の手前の成分がディレクトリでない,またはこのディレクトリを読む十分なパーミッションが無い.

• 相対パスに対しては,現在のディレクトリを決定できない.

• シンボリックリンクが存在しない場所を指しているか,リンクがループしている.

• 標準化されたパスがファイルパスにサポートされる最大の長さを超える.

Examples

# ランダムな一時ディレクトリcat(normalizePath(c(R.home(), tempdir())), sep = "\n")

NotYet Not Yet Implemented Functions and Unused Arguments

Description

欠損している機能をピンポイントで見つけるために, Rコアチームは欠損している R関数と既存の R関数のまだ使われていない引数に対してこれらの関数を使っている (それらは典型的に互換性の目的でそこにある).

あなた自身のコードで貢献することが歓迎される . . .

Usage

.NotYetImplemented()

.NotYetUsed(arg, error = TRUE)

Page 355: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

nrow 355

Arguments

arg 未だ使われていないある関数の引数.

error 論理値.もし TRUEならエラーが発生する;もし FALSEなら警告が与えられる.

See Also

反対に Deprecatedと Defunctは時代遅れのコード用である.

Examples

require(graphics)barplot(1:5, inside = TRUE) # 'inside' はまだ使われていない

nrow The Number of Rows/Columns of an Array

Description

nrowと ncolは x中に存在する行数と列数を返す. NCOLと NROWは同じことをベクトルを列数1の行列と見做して行う.

Usage

nrow(x)ncol(x)NCOL(x)NROW(x)

Arguments

x ベクトル,配列もしくはデータフレーム

Value

長さ1の整数又は NULL.

References

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

See Also

全ての次元を返す dim; array, matrix.

Page 356: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

356 ns-dblcolon

Examples

ma <- matrix(1:12, 3, 4)nrow(ma) # 3ncol(ma) # 4

ncol(array(1:24, dim = 2:4)) # 3, 二番目の次元NCOL(1:12) # 1NROW(1:12) # 12

ns-dblcolon Double Colon and Triple Colon Operators

Description

名前空間中の移出された変数や内部変数にアクセスする.

Usage

pkg::namepkg:::name

Arguments

pkg パッケージ名:シンボルか文字通りの文字列.

name 変数名:シンボルか文字通りの文字列.

Details

パッケージ pkgに対して pkg::nameは名前空間 pkg中の移出された変数 nameの値を返す.一方 pkg:::nameは内部変数 nameの値を返す.名前空間はまだロードされていなければ呼び出し前にロードされるが,パッケージは検索パスに付加されない.

存在しない変数やパッケージを指定するとエラーになる.

pkg::nameは環境 package:pkg中のオブジェクトにアクセスしないことを注意しよう(それはパッケージの名前空間が付加されるまで存在しない):後者は名前空間から移出されていないオブジェクトを含むかもしれない.それは遅延ロードで利用可能にされているデータセットにアクセスできる.

Note

自分のコード中で ::: を使用することは典型的にはデザイン上のミスである.なぜなら対応するオブジェクトは恐らく何らかの理由があって内部的にされているからである.もし単なる吟味以上の理由でオブジェクトにアクセスする必要を感じたならばパッケージの保守者に連絡しよう.

See Also

別の同じ名前のものでマスクされたオブジェクトにアクセスするには get.

Page 357: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

ns-hooks 357

Examples

base::logbase::"+"

## 注意 -- ':::' は自己責任で使うこと! ("詳細"を見よ)stats:::coef.default

ns-hooks Hooks for Namespace Events

Description

パッケージはロード,付加,除去,又はアンロードの際に呼び出される関数を提供できる.

Usage

.onLoad(libname, pkgname)

.onAttach(libname, pkgname)

.onUnload(libpath)

.onDetach(libpath)

.Last.lib(libpath)

Arguments

libname 名前空間を定義しているパッケージが見つかったライブラリのディレクトリを与える文字列.

pkgname パッケージの名前を与える文字列.

libpath パッケージへの完全なパスを与える文字列.

Details

ロード後,名前空間が封印され移出を実行する前に,loadNamespaceは .onLoadという名前のフック関数を探しそれを (二つの名前無し引数と共に)呼び出す.

パッケージが付加(libraryか attachNamespaceを使い)されると.フック関数 .onAttachが探され,もし見つかるとパッケージ環境が封印される前に(二つの名前のない引数と共に)呼び出される.

もし関数 .onDetach (R 3.0.0以来)が名前空間中にあるか .Last.libがパッケージから移出されていると,パッケージが detachされる際に,それが(一つの引数と共に)呼び出される.それは .onAttachが失敗していても呼び出されるかもしれず,従って用心深く書かれる必要がある. (それは tryCatch中で呼び出されるので,エラーはパッケージが除去されることをストップはしない.)

もし名前空間が(unloadNamespaceを使って)アンロードされると,フック関数 .onUnloadが最終的なアンロードの前に(一つの引数で)実行される.

.onLoadと .onUnload中のコードは検索パス上に基本パッケージ以外のパッケージがあることを仮定すべきではないことを注意しよう.現在のパッケージ中のオブジェクトは可視である(これが禁止されていない限り)が,他のパッケージからのオブジェクトは移入されるか二重コロン演算子を使うべきである.

Page 358: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

358 ns-load

.onLoad, .onUnload, .onAttachそして .onDetachは名前空間中の内部オブジェクトとして探され,移出されてはならない(一方で .Last.libはすべきである).

パッケージはユーザがそうするようにアレンジしない限り (例えば .Last経由で),Rセッションの最後で除去もアンロードもされないことを注意しよう.

名前空間の機能に対して必要な全てはロード/アンロード時に .onLoadと .onUnloadフックで処理されるべきである.例えば,DLLは(‘NAMESPACE’ファイル中で useDynLibダイレクティブでなされるのでない限り) .onLoad中でロードと初期化を行うことが出来,そして .onUnload中でアンロード出来る..onAttachはパッケージがユーザに見えるようになった時だけ必要になるアクションにだけ使う (例えば起動メッセージ)か,もしくはパッケージ環境が作られた後に実行される必要がある.

良い作法

名前空間のロードは .onAttachで与えられる開始メッセージを持ち,それが可能な限り静かであるべきでである.これらのメッセージ(そして .onLoadからの本質的なもの)はpackageStartupMessageを使うべきで,そうすることでそれらが邪魔になるところでは無言に出来る.

これらのフック中では libraryや require呼び出しはあってはならない.あるパッケージが他のパッケージをロードする方法はファイル ‘DESCRIPTION’の ‘Depends’欄を使うことである:これは従属性が文章化されパッケージが正しい順序でロードされることを保証する.名前空間のロードは検索パスを変更すべきではない.パッケージを付加するのではなく,名前空間の他のパッケージへの従属性は他のパッケージの名前空間から(選択的に)移入することで達成されるべきである.

パッケージの基本情報を表示するための libraryの help引数を使用することは計算されたパッケージ情報オブジェクトに関する formatを使い,そしてこれを packageStartupMessageに渡すべきである.

開始コードには installed.packagesの呼び出しはあってはならない:それは非常に遅い可能性があり,パッケージのインストールが並列で行われるならば Rの 2.14.2以前のバージョンでは失敗する可能性がある.別の方法についてはそのヘルプページを見よ.

コンパイルされたコード(例えば library.dynam を使って)は ‘NAMESPACE’ ファイル中の.onLoad又は useDynLibディレクティブ中でロードされるべきである.同様に,コンパイルされたコードは .Last.libや .onDetach中でアンロード(例えば library.dynam.unloadを使って)すべきではなく,.onUnload中でだけ行うべきである.

See Also

setHookは同じイベントに複数のフックを如何にして設定できるか.そして全てのフックを含むイベントの系列のリストを示す.

セッションの最後に実行されるフックについては reg.finalizer.

名前空間についてのより多くのことは loadNamespace.

ns-load Loading and Unloading Name Spaces

Description

名前空間をロード/アンロードする関数.

Page 359: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

ns-load 359

Usage

attachNamespace(ns, pos = 2L, depends = NULL)loadNamespace(package, lib.loc = NULL,

keep.source = getOption("keep.source.pkgs"),partial = FALSE, versionCheck = NULL)

requireNamespace(package, ..., quietly = FALSE)loadedNamespaces()unloadNamespace(ns)isNamespaceLoaded(name)

Arguments

ns 文字列または名前空間オブジェクト.

pos 付加する位置を指定する整数.

depends NULLかパッケージ中の .Dependsオブジェクトに記録される従属性の文字列ベクトル.

package ロードするパッケージ/名前空間を指定する文字列.

lib.loc ライブラリの検索パスを指定する文字列ベクトル.

keep.source 今はパッケージのインストールの途中を除いて無視される.より詳細は libraryのこの引数を参照.

partial 論理値:もし真ならロードしたコードの直後に停止.

versionCheck NULLかバージョンの指定(成分 opと versionを持つリスト).

quietly 論理値:進行とエラーのメッセージは抑制するか?

name パッケージの文字列又は‘名前’. as.symbolを見よ.例えば "stats".

... loadNamespaceに渡される追加引数.

Details

関数 loadNamespaceと attachNamespaceは普通 libraryが名前空間と必要な移入をロードするために使われた時暗黙のうちに使われる.しかしながらこれらの関数を直接呼び出すことが有用な場合もある.

loadNamespaceは指定された名前空間をロードし,それを内部的なデータベースに登録する.既にその名前の一つでロードされている名前空間をロード要求は何の効果も持たない.引数は libraryの対応する引数と同じ意味を持ち,そのヘルプページは特定のインストール済みパッケージが選ばれるようになるかの詳細を説明する.ロード後にloadNamespaceは .onLoadという名前のフック関数を名前空中の内部変数として探す(これは移出されてはならない).部分的なロードが遅延ロードを持つインストールをサポートするために使われる.

loadNamespaceはそれが検索パスにロードした名前空間を付加しない. attachNamespaceは名前空間の移出値を含むフレームを検索パスに付加するのに使うことが出来る (しかしこれは libraryがほとんど常に行うことである).フック関数 .onAttachは名前空間の移出が付加された後に実行される.

requireNamespaceは loadNamespaceに対するラッパで,論理値を返す requireの類似物である.

loadedNamespacesはロードされた名前空間の名前の文字列ベクトルを返す.

isNamespaceLoaded(pkg)は pkg %in% loadedNamespaces()と同値であるがより効率的である.

Page 360: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

360 ns-topenv

unloadNamespaceは名前空間のアンロードを強制することに使える.もし名前空間が付加されるとそれはまず除去され,その際もし移出されていれば名前空間中の .onDetachか .Last.lib関数が実行される.もし名前空間が他のロードされた名前空間から移出されていればエラーが発生し,名前空間はアンロードされない.もし定義されていればフック関数 .onUnloadが内部レジストリから名前空間を除去する前に実行される.

名前のアンロードと再ロードに関しては detachに対するヘルプのコメントを見よ.

Value

attachNamespaceはそれが検索パスに加えたパッケージ環境を不可視で返す.

loadNamespaceは名前環境を返す,既にロードされているものか関数がロードを引き起こしたもの.

requireNamespaceはもし成功すれば TRUE,さもなければ FALSEを返す.

loadedNamespacesは文字列ベクトルを返す.

unloadNamespaceは NULLを不可視で返す.

Author(s)

Luke Tierney and R-core

References

マニュアル ‘Writing R Extensions’の節 “Package namespaces”.

See Also

getNamespace, asNamespace, topenv, .onLoad (等);更に environment.

Examples

(lns <- loadedNamespaces())statL <- isNamespaceLoaded("stats")stopifnot( identical(statL, "stats" %in% lns) )

## 文字列 "foo" とシンボル 'foo' はここでは互いに交換して使える:stopifnot( identical(isNamespaceLoaded( "foo" ), FALSE),

identical(isNamespaceLoaded(quote(foo)), FALSE),identical(isNamespaceLoaded(quote(stats)), statL))

ns-topenv Top Level Environment

Description

環境 envirとその囲み環境からトップレベルの環境を見つける.

Usage

topenv(envir = parent.frame(),matchThisEnv = getOption("topLevelEnvironment"))

Page 361: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

NULL 361

Arguments

envir 環境.

matchThisEnv もし他の任意の基準が満足される前にマッチしたらその環境を返す.既定のオプション ‘topLevelEnvironment’は sys.sourceで設定される.これは具体的な環境をトップレベルの環境として扱う.引数を NULLとすれば決してマッチしない.

Details

topenv は envir とその囲み環境を探索中に見つかった最初のトップレベルの環境を返す.環境がトップレベルとは,内部的な環境の名前空間,検索パス中のパッケージ環境,もしくは .GlobalEnvである.

See Also

environment,特に “enclosing environments”に付いては parent.env().

名前空間についてのより多くのことは loadNamespace.

Examples

topenv(.GlobalEnv)topenv(new.env()) # また大局的環境topenv(environment(ls))# namespace:basetopenv(environment(lm))# namespace:stats

NULL The Null Object

Description

NULLは Rのヌルオブジェクトを表す.これは予約語である. NULLはしばしば値が決まらない表現式や関数から返される.

as.nullはその引数を無視し値 NULLを返す.

is.nullは,もしその引数が NULLならば TRUEを,さもなければ FALSEを返す.

Usage

NULLas.null(x, ...)is.null(x)

Arguments

x 検査もしくは強制変換されるオブジェクト.

... 無視される.

Page 362: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

362 numeric

Details

NULLは任意の構文的に正しい方法で添字操作が出来る(Extractを見よ).意味があろうとなかろうと,結果は常に NULLである.値 NULLを持つオブジェクトは置き換え演算子で変更でき,右辺の型に強制変換される.

NULLはまた空の対リストとして使われる.

Note

is.nullはプリミティブな関数である.

References

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

Examples

is.null(list()) # FALSE (意図的に!)is.null(integer(0)) # FALSEis.null(logical(0)) # FALSEas.null(list(a = 1, b = "c"))

numeric Numeric Vectors

Description

型 "numeric"のオブジェクトを作る,検査する. is.numericはオブジェクトが数値として解釈できるかどうかをテストするより一般的な検査.

Usage

numeric(length = 0)as.numeric(x, ...)is.numeric(x)

Arguments

length 希望の長さを指定する非負整数.倍精度値は整数に変換される:長さが1以外の引数を与えるとエラーになる.

x 変換又は検査されるオブジェクト.

... 他のメソッドに・から渡される追加引数.

Details

numericは double (そして real)と同値である.これは各要素が 0の指定された長さの倍精度実数値ベクトルを作る.

as.numericは総称的関数であるが,S3メソッドは as.doubleに対して書かれるべきである.これは as.doubleと同一である.

is.numeric は内部総称的なプリミティブ関数である:オブジェクトの個別のクラスを処理するメソッドを書くことが出来る, InternalMethodsを見よ.これは is.doubleと同

Page 363: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

numeric 363

じではない.因子は既定メソッドで処理できる.そしてクラス "Date", "POSIXt"そして"difftime"用のメソッドがある(全て偽を返す). is.numericに対するメソッドは基礎クラスが doubleか integerの時,そして値が合理的に数値と見做せる時 (例えば算術が可能で,比較が基礎型を使って出来る)だけ真を返すべきである,

Value

numericと as.numericに付いては doubleを見よ.

is.numericに対する既定メソッドは,もしその引数が "numeric"モード("double"型か"integer"型)で,因子でない時だけ TRUEで,さもなければ FALSEである.つまりis.integer(x) || is.double(x),又は (mode(x) == "numeric") && !is.factor(x).

S4メソッド

as.numericと is.numericは内部的に S4総称的で,従って setMethodを使ってそれらにメソッドを設定できる.

as.numericと as.doubleが同一であることを保証するために,S4メソッドは as.numericに対してだけ設定できる.

名前に関するノート

Rが浮動小数点数ベクトルに対して二つの名前, doubleと numeric (そして以前は realがあった)を持つのは歴史的な混乱からである.

doubleは型の名前である. numericはモードの名前で,同時に暗黙のクラスでもある.S4形式的クラスとしては "numeric"を使う.

可能な混乱は Rが‘倍精度実数や整数’を意味するのにモード "numeric"を使うことである.これは S4の用法と異なる.従って is.numericはモードを検査しクラスを検査しない.しかし as.numeric (as.doubleと同一)はクラスの強制変換をする.

References

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

See Also

double, integer, storage.mode.

Examples

as.numeric(c("-.1"," 2.7 ","B")) # (-0.1, 2.7, NA) + 警告

as.numeric(factor(5:10))

Page 364: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

364 NumericConstants

NumericConstants Numeric Constants

Description

どのように Rは数値定数を構文解析するか.

Details

Rは入力中の数値定数を C99の浮動小数点定数と極似した流儀で構文解析する.

Inf と NaN は数値定数である( typeof(.) "double"). テキスト入力(例えば scan とas.double)では,これらは大・小文字が無視され,infinity は Inf と同じとされる.NA_real_と NA_integer_は型 "double"と "integer"で欠損値を意味する.他のすべての数値定数は数字もしくはピリオッドで始まり, 10進数もしくは16進数で,オプションで Lが後に付く.

16進数は 0xか 0Xで始まり, 0-9 a-f A-F .からの空でない列が続き,16進数と解釈される.2進数の指数がオプションで付く. 2進数の指数は Pか pの後にオプションのプラス・マイナス符号,そして空でない(10進法の)数字が続き,2の巾乗を意味する.従って,0x123p456は 291× 2456となる.

10進数定数は空でない数字の列で,ピリオッド(小数点)を含む可能性があり,オプションで10進指数が続く.10進指数は Eか eの後にオプションのプラス・マイナス符号,そして空でない数字の列が続き,10の巾乗を意味する.

大きすぎるか小さすぎて表示不可能な値は桁溢れ Infか桁落ち 0.0する.

数値定数の直後に iが続くと虚数見做される.

数値定数の直後に Lが続くと可能なら整数と見做される(もし "."を含めば警告が出る).

言語が数字の他の表現を持っていても,アスキー数字 0–9 のみが数字と見做される.‘10進法の分離記号’は常にピリオッドで,決してカンマではない.

先頭のプラスやマイナスは構文解析では数値定数の一部とは見做されず,定数に適用された単項演算子とされる.

Note

文字列が数値定数の入力として構文解析されると,数値は使われている Cの倍精度型として正確に表現できないかもしれない.その時は表示可能な最も近い数値の一つが返される.

R 自体の C コードが定数を2進数に変換することに使われるので,結果は完全な IEC600559算術規則を移植しているすべてのプラットフォームで同一になると期待することが出来る(最もありそうな違いは .Machine$double.xmin以下の数である).同じコードがscanで使われる.

See Also

Syntax. 複素数には complexを見よ.文字定数の構文解析には Quotes, Rの予約語については Reserved.

Page 365: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

numeric_version 365

Examples

## 固定または科学的書式で数を作ることが出来る.2.12.1e10-2.1E-10

## 結果のオブジェクトは数値クラスで倍精度型.class(2.1)typeof(2.1)

## これは整数のようにタイプしても同じこと.class(2)typeof(2)

## もし本当に整数が必要なら接尾辞 "L" を使う.class(2L)typeof(2L)

## これらは等しいが同値ではない2 == 2Lidentical(2, 2L)

## 0と1の間の数は先頭の0無しで書いても良い## (しかし普通これは可読性を損なう).1234

sqrt(1i) # 初等数学を覚えている?utils::str(0xA0)identical(1L, as.integer(1))

## 接頭辞 "0x" を接尾辞 "L" と一緒に使うことが出来る:identical(0xFL, as.integer(15))

numeric_version Numeric Versions

Description

パッケージのバージョンを含む数値的なバージョンの表現に対する簡単な S3クラスと関連メソッド.

Usage

numeric_version(x, strict = TRUE)package_version(x, strict = TRUE)R_system_version(x, strict = TRUE)getRversion()

Arguments

x 適当なバージョン文字列をもつ文字列ベクトル (‘詳細’を見よ);又はpackage_versionに対しては R.versionにより得られるような Rバージョンオブジェクト.

Page 366: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

366 numeric_version

strict 不正な数値バージョンはエラーにする(既定)かどうかを指示する論理値.

Details

数値バージョンは一つ又はそれ以上の非負整数の列である.普通一つの文字 ‘.’ か‘-’ で分離結合された数列要素を持つ文字列として表現される(例えばパッケージの‘DESCRIPTION’ファイル中のように).Rのパッケージのバージョンは少なくとも二つのそうした整数から成り,Rシステムのバージョンは正確に三つ(主,副,そしてパッチレベル)から成る.

関数 numeric_version, package_versionそして R_system_versionは(もし適切ならば)そうした文字列から表現を作り,強制変換と検査,結合,比較,要約(min/max),データフレームに含める,添字操作,そしてプリントが出来る.このクラスはそうした表現のベクトルを保持できる.

getRversionは実行中の Rのバージョンを Rバージョンオブジェクトとして返す.

[[演算子は一つのバージョンを取り出したり置き換えたりする.バージョンの整数にアクセスするには二つの整数を使う:例を見よ.

See Also

compareVersion;個別の Rパッケージのバージョンは packageVersion. Rのバージョンは R.version等 (そして getRversion()の基礎にある情報は getRversion()).

Examples

x <- package_version(c("1.2-4", "1.2-3", "2.1"))x < "1.4-2.3"c(min(x), max(x))x[2, 2]x$majorx$minor

if(getRversion() <= "2.5.0") { ## 欠損した性質を処理するcat("Your version of R, ", as.character(getRversion()),

", is outdated.\n","Now trying to work around that ...\n", sep = "")

}

x[[c(1, 3)]] # 数値ベクトルとしての '4',x[1, 3] と同じx[1, 3] # 整数としての 4x[[2, 3]] <- 0 # ゼロパッチレベルx[[c(2, 3)]] <- 0 # 同じxx[[3]] <- "2.2.3"; xx <- c(x, package_version("0.0"))is.na(x)[4] <- TRUEstopifnot(identical(is.na(x), c(rep(FALSE,3), TRUE)),

anyNA(x))

Page 367: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

octmode 367

octmode Display Numbers in Octal

Description

整数を8進法書式に変換したりプリントしたりする.必要なら先頭にゼロを補い,最大なものを表示するのに必要なだけの桁を持つ.

Usage

as.octmode(x)

## S3 method for class 'octmode'as.character(x, ...)

## S3 method for class 'octmode'format(x, width = NULL, ...)

## S3 method for class 'octmode'print(x, ...)

Arguments

x オブジェクト,メソッドに対してはクラス "octmode"を継承する.

width NULLか使われる最小の欄幅を指定する正整数で,先頭がゼロで埋められる.

... 他のメソッドに・から渡される追加引数.

Details

クラス "octmode"はその属性を持つ整数ベクトルからなり,それらが8進法表記でプリントされることを保証するためだけに使われる.特に 755のような Unix風のファイルのパーミッションが例である.添字による部分抽出操作([)も使える.

もし width = NULL (既定)ならば,出力は全ての非欠損要素が必要な最小の幅になるように先頭がゼロで埋められる.

as.octmodeは整数(型 "integer"又は "double")や,その要素が数字 0-7 (又は NA)だけを含む文字列ベクトルをクラス "octmode"に変換できる.

メソッド !,|, &そして xorメソッドがある:これらはその引数を長い方の長さまでリサイクル使用し,そしてそれから各要素にビット単位で操作を適用する.

See Also

これらは file.infoに対する補助関数である.

整数を8進法に変換する際の他のオプションに付いては hexmodeと sprintf. 8進法文字列を整数に変換するには strtoi. strings to integers.

Page 368: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

368 on.exit

Examples

(on <- as.octmode(c(16, 32, 127:129))) # "020" "040" "177" "200" "201"unclass(on[3:4]) # 添字による部分抽出操作

## ファイルのモードを操作するfmode <- as.octmode("170")(fmode | "644") & "755"

umask <- Sys.umask(NA) # プラットフォーム依存c(fmode, "666", "755") & !umask

on.exit Function Exit Code

Description

on.exitはその引数で与えられた表現式を,現在の関数が終了した時 (自然にもしくはエラーの結果として)に実行されるように記録する.これはグラフィックスのパラメータの再設定や他のクリーン化作業を実行するのに有用である.

表現式が与えられない,つまり呼び出しが on.exit(),と現在の on.exitコードは取り除かれる.

Usage

on.exit(expr = NULL, add = FALSE)

Arguments

expr 評価される表現式.

add もし TRUEならば任意の先に設定された表現式の後に exprを実行用に付け加える;さもなければ(既定) exprは任意の先に設定された表現式を上書きする.

Details

on.exitに渡された expr引数は評価されずに保存される.もしそれがその後同じ関数中の on.exit呼び出しで除去されたり置き換えられたりしなければ,関数の評価フレーム中でそれが終了した時 (標準エラー処理を含め)評価される.このように表現式中の任意の関数や変数は終了時に関数とその環境中で探される: expr中の現在の値を捉えるにはsubstituteや類似物を使う.

これは‘特殊’プリミティブ関数である:これは引数 addだけを評価する.

Value

不可視の NULL.

References

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

Page 369: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Ops.Date 369

See Also

sys.on.exit()がその中で評価される関数中で on.exit()で使用するため保管された表現式を返す sys.on.exit.

Examples

require(graphics)

opar <- par(mai = c(1,1,1,1))on.exit(par(opar))

Ops.Date Operators on the Date Class

Description

"Date"クラスに対する演算.

Opsメソッドと,method and specific Dateクラスに対する + and -用のメソッドがある.

Usage

date + xx + datedate - xdate1 lop date2

Arguments

date 日付オブジェクト

date1, date2 日付オブジェクトか文字列ベクトル.(文字列ベクトルは as.Dateにより変換される.)

x 数値ベクトル(単位日)かクラス "difftime"のオブジェクト.一番近い日数に丸められる.

lop ==, !=, <, <=, > or >=のいずれか.

Details

もし数値ベクトルであれば xは整数である必要はないが,少数日数に関する Datesのヘルプを見よ.

Examples

(z <- Sys.Date())z + 10z < c("2009-06-01", "2010-01-01", "2015-01-01")

Page 370: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

370 options

options Options Settings

Description

Rが計算やその結果の表示をする仕方に影響する多くの大局的オプションを設定したり調べたり出来るようにする.

Usage

options(...)

getOption(x, default = NULL)

.Options

Arguments

... name = valueを使い任意のオプションを定義できる.しかしながら下にあるものだけが基本 Rで使われている.オプションはまた名前付きリストである単一の名前無し引数を与えることで渡すことが出来る.

x オプション名を保持する文字列.

default もし指定したオプションがオプションのリスト中で設定されなければこの値が返される.これはオプションの検索,それが設定されているかどうかのチェック,そしてもしされていなければそれを個別に設定することを容易にする.

Details

options()を引数なしに起動すると現在のオプションの値のリストが返される.下に羅列された全てのオプションが最初から設定されているわけではないことを注意する.一つのオプションの値にアクセスするには,長さ1のリストである options("width")ではなく,むしろ例えば getOption("width")を使うべきである.

Value

getOption に対してはオプション x の現在の値,もしくはオプションが未設定ならばNULL.

options()に対しては名前でソートされた全ての設定オプションのリスト.options(name)に対しては設定値を含む長さ1のリスト,もしくは未設定ならば NULL.一つ又はそれ以上のオプションの設定に使えば,変更されたオプションの直前の値を持つリスト(不可視で返される).

基本 Rで使われるオプション

add.smooth: 典型的には論理値,既定値は TRUE.またどれくらい(シミュレーションした)平滑性を加えるかを指定する整数に設定することが出来る.これは現在 plot.lmだけで使われる.

Page 371: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

options 371

browserNLdisabled: 論理値:ブラウザ中で新行を "n"の同義語として使うのを無効にする.

checkPackageLicense: 論理値,既定では設定されない.もし真なら libraryは任意の非標準的ライセンスを最初の使用時に受け入れるかどうかを尋ねられる.

check.bounds: 論理値,既定値は FALSE.もし真なら codex <- 1:3; x[5] <- 6のようにベクトル (原子的かリスト)が拡大されるたびに警告が出る.

CBoundsCheck: 論理値, .Cと .Fortranが原子的ベクトル引数に対して配列のはみ出しをチェックするためにコピーを作るかどうかを制御する.

環境変数 R_C_BOUNDS_CHECKの値で初期化される (有効にするには yesにする).continue: 一行を超える行に対して使われるプロンプトを設定する空でない文字列.defaultPackages: Rの起動時に既定で付加されるパッケージ.環境変数 R_DEFAULT_PACKAGES

の値で初期化される.もしくはそれが未設定ならc("datasets", "utils", "grDevices", "graphics", "stats", "methods")とされる.(R_DEFAULT_PACKAGESを NULLかコンマで分離されたパッケージ名のリストに設定する.)これをファイル ‘.Rprofile’中で設定することは出来ない.なぜならその値はファイルが読まれる前に参照されるから.

deparse.cutoff: 逆構文解析された言語構成のプリントを制御する整数値.既定値は60.

deparse.max.lines: traceback, browser中の逆構文解析,そしてデバッグフラグが設定された関数に入った時に使われる行数を制御する.初期状態では未設定で,正整数に設定された時だけ使用される.

digits: 数値をプリントする際に使われる桁数を制御する.これは示唆だけである.適正な値は 1. . . 22で,既定値は 7.15より大きな値については print.default中のノートを見よ.

digits.secs: 時刻値の秒数をプリントする際の整形に使われる最大桁数を制御する.適正な値は 0. . . 6で,既定値は 0. strftimeを見よ.

download.file.extra: 既定でないメソッドに対する特別なコマンドライン引数.download.fileを見よ.

download.file.method: download.fileに使われる既定メソッド.現在ダウンロード用メソッドには "internal", "wininet" (Windowsのみ), "libcurl", "wget"そして "curl"が利用できる.未設定なら method = "auto"が選ばれる: download.fileを見よ.

echo: 論理値.非対話的モードだけで使われ,入力をエコーするかどうかを制御する.コマンドラインオプション ‘--slave’はこれを FALSEに設定するが,さもなければセッションは TRUEで開始される.

encoding: エンコーディング名,既定では "native.enc". connectionsを見よ.

error: stopによって作りだされた破滅的でないエラー,そしてやシグナルや内部的に検出されたエラー等の処理を管理する関数か表現式.もしこのオプションが関数なら,引数なしのこの関数への呼び出しが表現式として創りだされる.既定値は NULLである:この場合の挙動については stopを見よ.関数 dump.framesと recoverは検死デバッグを許す別の方法を与える.これらは,例えば options(error = utils::recover)のように ‘.Rprofile’等のスタートアップファイルの中で指定される必要があることを注意する.

expressions: 評価されるべき入れ子の表現式の限界を設定する.適正な値は 25. . . 500000で既定値は 5000.もし増加したければ Rをより大きなプロテクションスタックで開始したくなるかもしれない; Memory中の ‘--max-ppsize’を見よ.また Cスタックのオーバーフローからセグメンテーションフォールトを起こす可能性があることも注意しよう.そしてそれが可能な OS ではそれを増やしたくなるかもしれない.一旦限界に達するとエラーが起きる.現在の評価中の数は Cstack_infoの呼び出しで分かる.

Page 372: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

372 options

keep.source: TRUEの時,関数のソースコード (新規に定義されたものやロードされたもの)はコメント付きで内部的に正しい場所に保存される.ソースはプリントやdeparse(fn, control = "useSource")を使って見ることが出来る.

既定値は interactive(),つまり対話的な使用では TRUE.

keep.source.pkgs: keep.sourceと同様であるが,パッケージがインストールされた時だけ使われる.環境変数 R_KEEP_PKG_SOURCEが yesに設定されていない限り既定値はFALSE.

max.print: 整数で既定値は 99999. printや showメソッドはこのオプションを使うことができ,プリントされる情報の量を max.printの大きさ程度(典型的には少し小さく)に制限する.

OutDec: 一つの文字を含む文字列.出力変換で小数点として使われることが好ましい文字.つまりプリント,プロット,書式,そして as.characterで使われるが,逆構文解析,sprintf,そして formatCでは使われない(これらは時折プリント以前に使われる).R 3.2.0以前では1バイト文字だけがサポートされていた. R 3.2.1及びそれ以前では多(またはゼロ)バイト文字の OutDecが受け入れられたが,常に部分的にしか動作しなかった.

pager: file.showによりテキストの表示に使われる命令.既定は ‘R_HOME/bin/pager’で,これは環境変数 PAGERで指定されるコマンドライン実行のシェルスクリプトであり,その既定値はコンフィギュレーション時に設定される.普通 lessである.文字列や R関数で良く,その場合 file.showの最初の四つの引数に対応する次の引数を受け入れる必要がある (files, header, title, delete.file).

papersize: postscript が使う既定のページの書式;R が起動するときに環境変数R_PAPERSIZE で設定される:もしそれが未設定か不正なら既定値は LC_PAPER の局所カテゴリーから導かれる値か,もしそれが利用できなければ Rが構築された時に設定される既定値.

pdfviewer: 既定の PDFビューア.既定値は環境変数 R_PDFVIEWERから設定され,その既定値は Rのコンフィギュレーション時に設定される.

printcmd: postscriptがプリントに使う命令;Rが起動する時環境変数 R_PRINTCMDによって設定される.これは入力を ‘stdin’にパイプするか,一つのファイル名の引数が与えられることが期待されている命令でなければならない.普通 Unix風システムでは "lpr"に設定される.

prompt: Rのプロンプトに使われる空でない文字列;普通空白 (" ")で終わるべきである.

rl_word_breaks: リードラインベースのターミナルインタフェイスで使われる.既定は" \t\n\"\\'`><=%;,|&{()}".

これは入力ラインをオブジェクトとファイル名の補完のためにトークンに分割するために使われる文字のセットである.演算子の周囲に空白を使わない人物は次を好むかもしれない, " \t\n\"\\'`><=+-*%;,|&{()}".

save.defaults, save.image.defaults: saveを見よ.

scipen: 整数.数値を固定表記にするか指数表記にするか決定する際に使われるペナルティ.正の値は固定表示に,府の値は科学的表記にバイアスをかける: scipen桁幅より広くない限り固定表記が好まれる.

showWarnCalls, showErrorCalls: 論理値.警告とエラーメッセージはコールスタックの要約を示すべきか? 既定では非対話的なセッションではエラー呼び出しが示される.

showNCalls: 整数.楕円が使われる前に呼び出しの系列がどれだけ長く(バイト単位)あるべきかを制御する.既定は 40で少なくとも 30で 500を超えるべきではない.

Page 373: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

options 373

show.error.locations: エラーのソース位置をプリントすべきか?もし TRUEか "top"に設定すると,スタックで最上位(最も最近の呼び出し)のソース位置がプリントされる. "bottom"はスタック上に見つかる最も前の呼び出しの位置をプリントする.

整数値は他の項目を選択できる.値 0は "top"に対応し,整数値はそこからスタックを下がっていく.値 -1は "bottom"に対応し,負の値はそこから昇っていく.

show.error.messages: 論理値.エラーメッセージをプリントするか? tryかユーザがインストールしたエラーハンドラーと共に使うことを意図している.

stringsAsFactors: data.frameと read.tableの引数に対する既定設定.

texi2dvi: パッケージ tools 中の関数 texi2dvi と texi2pdf が使う.起動時に環境変数R_TEXI2DVICMDにより設定される.

timeout: 整数.秒単位のある種のインターネット操作のタイムアウト時間.既定値は 60秒. download.fileと connectionsを見よ.

topLevelEnvironment: topenvと sys.sourceを見よ.

url.method: 文字列:url に対する既定メソッド.普通未設定で "default" に等しく,Windowsを除けば "internal".

useFancyQuotes: sQuote, dQuote そしてパッケージ tools 中のテキストヘルプの整形(Rd2txtを見よ)における向き付き引用符の使用を制御する."UTF-8"が可能.

verbose: 論理値.Rは進行度に関する余分の情報を報告すべきか?コマンドラインオプション ‘--verbose’により TRUEに設定される.

warn: 警告メッセージの処理を設定する.もし warnが負なら全ての警告は無視される.もし warnがゼロならば警告はトップレベルの関数が返るまで蓄積される.もし 10かそれより少ない警告が出るとそれらはプリントされ,さもなければ幾つ警告が出たかというメッセージがプリントされる. last.warningと呼ばれるオブジェクトが作られ関数 warningsを使ってプリントできる.もし warnが1ならば,警告は出るたびにプリントされる.もし warnが2かそれ以上なら全ての警告はエラーに転換される.

warnPartialMatchArgs: 論理値.もし真なら,引数のマッチングで部分マッチングが使われると警告する.

warnPartialMatchAttr: 論理値.もし真なら,属性を attrを使って取り出す際に部分マッチングが使われると警告する.

warnPartialMatchDollar: 論理値.もし真なら, $を使った抽出に対し部分マッチングが使われると警告する.

warning.expression: 警告が出ると呼び出される R cコードの表現式で,標準メッセージを置き換える.もしヌルでなければオプション warnの値にかかわらずこれが呼び出される.

warning.length: 警告とエラーに対する打ち切り限界を設定する.100. . . 8170の範囲の非負の整数で,既定値は 1000.

nwarnings: warn = 0の時に保存する警告の数で,既定値は 50.これはそれらが集められている間に呼び出されるとメッセージを捨て去る.

width: ベクトル,行列そして配列をプリントする際と, catで埋める際に使われる一行あたりの列数の最大値.

東アジアの言語を除き,列は普通文字と同じである.

R が稼働しているウィンドウのサイズを変えた時これを変更したくなるかもしれない.適正な値は 10. . . 10000 で,既定値は普通 80. (適正値の限界はファイル‘Print.h’中にあり,Rを再コンパイルすることで変更できる.)ある種の Rコンソールはサイズを変更されると自動的に値を変更する.

Page 374: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

374 options

R が起動した時の端末の幅からこれを自動的に設定する一つの方法に付いてはStartupの例を見よ.

これらのオプションの幾つかの‘工場出荷時’既定設定は

Page 375: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

options 375

add.smooth TRUEcheck.bounds FALSEcontinue "+ "digits 7echo TRUEencoding "native.enc"error NULLexpressions 5000keep.source interactive()keep.source.pkgs FALSEmax.print 99999OutDec "."prompt "> "scipen 0show.error.messages TRUEtimeout 60verbose FALSEwarn 0warning.length 1000width 80

他のものは環境変数で設定されたり,プラットフォーム依存である.

パッケージ grDevices中のオプション設定

これらはパッケージ grDevices (又はその名前空間)がロードされた時にまだ設定されていなければ設定される.

bitmapType: (Unixのみ)文字.pngのようなビットマップデバイスに対する既定タイプ.利用できる場合は既定値は "cairo"か,又は OS Xでは利用できれば "quartz".

device: 関数の名前を与える文字列か関数オブジェクト自体で,呼び出されるとそのセッションの既定タイプの新しいグラフィックスデバイスを作り出す.このオプションの値の既定値は対話的なセッションに対しては通常のスクリーンデバイス(例えば X11, windows又は quartz)で,バッチしようかスクリーンが利用できなければ pdfである.もしデバイスの名前に設定されれば,デバイスは最初大局的環境(通常の検索パスの下),そしてそれからパッケージ grDevicesの名前空間から探される.対話的と非対話的セッション中の既定値はそれぞれ環境変数 R_INTERACTIVE_DEVICEと R_DEFAULT_DEVICEを使ってで設定できる.

‘通常のスクリーンデバイス’に対する検索のロジックは, Windows では windows,そして OS Xでは利用できれば quartz (コンソールで実行し,構築時にコンパイルできる).さもなければもし環境変数 DISPLAYが設定されていれば X11が使われる.

device.ask.default: 論理値.デバイスがオープンされた時の devAskNewPage("ask")に対する既定値.

locatorBell: 論理値.locator と identify 中の選択ベルで確認すべきか? 既定値はTRUE.少なくとも X11と windowsデバイスでは尊重される.

パッケージ graphicsで使われる他のオプション

max.contour.segments: 正整数で,もし未設定ならば既定値は 25000.contourLines やcontourの一つの等高線中の線分の数の上限.

Page 376: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

376 options

パッケージ stats中のオプション設定

これらはパッケージ stats (またはその名前空間)がロードされた時まだ未設定ならば設定される.

contrasts: 既定の contrastsが aovや lm等を用いたモデル当てはめで使われる.長さ 2の文字列ベクトルで,最初は順序無しの因子とともに使われる関数,二つ目は順序付き因子と共に使われる関数を与える.既定では要素は名前 c("unordered", "ordered")を持つが,名前は使われない.

na.action: ある種の状況で欠損値 (NA)の処理用に使われる関数名.

show.coef.Pvalues: 論理値,P値が係数の要約表中に印刷されるかどうかに影響する.printCoefmatを見よ.

show.nls.convergence: 論理値,nlsの成功した当てはめに対して収束メッセージをプリントするか?

show.signif.stars: 論理値,係数の要約表に星印をプリントするべきか? printCoefmatを見よ.

ts.eps: ある種の時系列(ts)計算に対する相対許容度.既定値は 1e-05.

ts.S.compat: 論理値.時系列スペクトラムのプロットを S 互換にするため使われる.plot.spec中の引数 logの説明を見よ.

パッケージ utils中のオプション設定

これらはパッケージ utils (又はその名前空間)がロードされた時にまだ未設定ならば設定される.

BioC_mirror: setRepositories が使う Bioconductor のミラーの URL.例えば既定値の‘"http://bioconductor.org"’又はヨーロッパのミラー‘"http://bioconductor.statistik.tu-dortmund.de"’. chooseBioCmirrorで設定できる.

browser: browseURLが使う HTMLブラウザ.これは UNIXでは既定のブラウザを,またWindowsでは既定でないブラウザを設定する. URLを引数に持ち呼び出される R関数でも良い.より詳細は browseURLを見よ.

ccaddress: 既定値は create.post (そして bug.reportが使用する Cc: アドレスとhelp.request). FALSEや ""でも良い.

citation.bibtex.max: 既定値は 1; citation中の文献項目(bibentry)の最大数で,テキストと並んで bibtexバージョンがプリントされる.

de.cellwidth: 整数:データエディタ dataentry中で使われるセル幅(文字数単位).もし未設定(既定), 0,負,又は NAならば可変セル幅が使われる.

demo.ask: demo関数の ask引数に対する既定値.

editor: 例えば edit 用の既定のテキストエディタを設定する空でない文字列化関数.UNIXでは環境変数 EDITORから設定される.又はもし未設定なら VISUALか vi.

example.ask: example関数の ask引数に対する既定値.

help.ports: 内部 HTTPサーバーのポートを設定するオプションの整数ベクトル,startDynamicHelpを見よ.

help.search.types: help.searchと ?? によって探されるドキュメントの既定タイプ.

help.try.all.packages: helpのある引数に対する既定値.

help_type: helpのある引数に対する既定値で,また ? によるヘルプのタイプとして使われる.

Page 377: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

options 377

HTTPUserAgent: HTTP(S)リクエスト中でユーザエージェントとして使われる文字列.もし NULLならリクエストはユーザエージェントのヘッダ無しで行われる.既定値はR (<version> <platform> <arch> <os>).

install.lock: 論理値: install.packagesがディレクトリ毎のパッケージのロックを使うべきか? OS XとWindowsで最も役に立つが,R CMD INSTALLによるソースのインストールに対してスタートアップファイル中でも使うことができる.バイナリのインストールに対しては文字列 "pkgloack"でも良い.

internet.info: URLからのダウンロード時にプリントされる情報の最小レベル."internal"と "libcurl"メソッドが使われる.既定値は 2で失敗用.より詳細な情報を得るには 1 か 0 に設定する(the "internal" メソッドでは 0 は 1 よりも多くの情報を与える).

install.packages.check.source: バイナリパッケージをサポートするプラットフォーム上で install.packages (そして間接的に update.packages)により使われる.可能な値は "yes"と "no"で,未設定は "yes"と同値である.

install.packages.compile.from.source: バイナリパッケージをサポートするプラットフォーム上で install.packages(type = "both") (そして間接的に update.packages)により使われる.可能な値は "never", "interactive" (これは対話的使用では問い合わせをバッチ使用では "never"を意味する),そして "always"である.既定値は環境変数 R_COMPILE_AND_INSTALL_PACKAGESから取られ,もし未設定ならば既定値は,環境変数 MAKEを参照して makeプログラムが見つからない限り "never"を使う.

mailer: create.postそして,従って bug.reportと help.requestによって使われる既定の電子メイルメソッド.

menu.graphics: 論理値:もし利用可能ならグラフィカルなメニューを使うべきか.既定値は TRUE.現在 select.list, chooseCRANmirror, setRepositoriesそして help中で複数の(テキスト)ヘルプファイルからの選択に使われる.

pkgType: ダウンロードしインストールされるパッケージの既定タイプ – install.packagesを見よ.可能な値は "source" (CRANの OS X構築下を除き既定値), "mac.binary.","mac.binary.mavericks"そして "both" (CRANの OS X構築に対する既定値).Win-dows は "win.binary". ("mac.binary.leopard" そして "mac.binary.universal" は最早使われない.)値 "binary"はネイティブのバイナリタイプの同義語である (もしそうしたものがあれば); "both"は install.packagesによりソースとバイナリインストールのどちらかを選択するために使われる.

repos: update.packagesが使うためのレポジトリの URL.既定は c(CRAN="@CRAN@")で,幾つかのユーティリティが CRANミラーの選択を促す.これを避けるには CRANミラーを次のようなもので設定するlocal({r <- getOption("repos"); r["CRAN"] <- "http://my.local.cran"; options(repos = r)}).

setRepositoriesを使ってより多くのレポジトリ (Bioconductorと Omegahat, R-Forge,Rforge.net . . . ) を付け加えられることを注意する.

SweaveHooks, SweaveSyntax: Sweaveを見よ.

unzip: unzipによって使われる文字列:外部プログラム unzipや "internal"へのパス.既定値は R_UNZIPCMDの値で,これは unzip命令がコンフィギュレーションの間に見つかれば ‘etc/Renviron’中に設定される.

useHTTPS: 論理値.chooseCRANmirrorが使う:安全なミラーが好ましいか?もし未設定ならば TRUEが仮定される.

パッケージ parallel中のオプション設定

これらはパッケージ parallel (またはその名前空間)がロードされた時にまだ未設定なら設定される.

Page 378: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

378 options

mc.cores: 現在の Rプロセスと並列に実行が許される追加の Rプロセスの最大許容数を与える整数.既定値はもし設定されていれば環境変数 MC_CORESの設定.これを使う殆どのアプリケーションは,もし未設定ならば制限 2を使う.

Unixだけで使われるオプション

dvipscmd: ポストスクリプトを使ってヘルプページをオフラインでプリントする(廃止された)のに使われる命令を与える文字列.既定値は "dvips".

Windowsだけで使われるオプション

warn.FPU: 論理値,既定では定義されていない.もし真なら dyn.loadがバグのある DLLでダメージを受けた制御ワードを修復するたびに警告が出される.

Note

Sとの互換性のため目に見えるオブジェクト .Optionsがある.その値は現在の options()の値を含む対リストである(決まった順序は無い).これに付値すれば局所的なコピーが出来,オリジナルを変更しない.

References

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

Examples

op <- options(); utils::str(op) # op は名前付きリスト

getOption("width") == options()$width # 後者はより多くのメモリを必要とするoptions(digits = 15)pi

# エディタをセットし,前の値を保存old.o <- options(editor = "nedit")old.o

options(check.bounds = TRUE, warn = 1)x <- NULL; x[4] <- "yes" # 警告を与える

options(digits = 5)print(1e5)options(scipen = 3); print(1e5)

options(op) # (全ての)初期オプションをリセットoptions("digits")

## Not run: ## コントラスト処理を S のように設定options(contrasts = c("contr.helmert", "contr.poly"))

## End(Not run)

## Not run: ## エラー時に R セッションをエラー状態 66 で停止options(error = quote(q("no", status = 66, runLast = FALSE)))stop("test it")

Page 379: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

order 379

## End(Not run)

## Not run: ## デバッグ用にエラー時の挙動を設定## エラー時にブラウザを開く,?recover を見よ:options(error = recover)## 後で debugger() を呼び出せる用意をする,?debugger を見よ:options(error = dump.frames)## 非対話的なセッションのための可能な設定options(error = quote({dump.frames(to.file = TRUE); q()}))

## End(Not run)

# オプションを得る二つの方法を比較し,それを# 未設定の可能性を考慮し使う.

if(as.logical(getOption("performCleanp", TRUE)))cat("do cleanup\n")

## Not run:# 上を既定値無しに表現するよりぎこちない方法

tmp <- getOption("performCleanup")if(is.null(tmp))

tmp <- TRUEif(tmp)

cat("do cleanup\n")

## End(Not run)

order Ordering Permutation

Description

orderはその第一引数を上昇または減少順に再配置した置換から第二引数でタイブレークしたものを返す. sort.listは同じであるが一つの引数だけを使う.これらをデータフレーム等のソートにどのように使うかは例を見よ.

Usage

order(..., na.last = TRUE, decreasing = FALSE)

sort.list(x, partial = NULL, na.last = TRUE, decreasing = FALSE,method = c("shell", "quick", "radix"))

Arguments

... 数値,複素数,文字列,又は論理値ベクトルの列で,全てが同じ長さでか,同じクラスの Rオブジェクト.

x 原子的なベクトル.

partial 部分ソートのための添字のベクトル. (NULLでない値は実装されていない.)

decreasing 論理値.ソートの順序は上昇順か減少順か?

Page 380: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

380 order

na.last NAの扱いを制御するため.もし TRUEならばデータ中の欠損値は最後に置かれる;もし FALSEならばそれらは最初に置かれる;もし NAならばそれらは取り除かれる(‘注意’を見よ.)

method 使われるメソッド:部分マッチが許される.特別な場合を除いて既定は "shell": ‘詳細を見よ’.メソッド "shell"と "quick"の詳細については sortのヘルプを見よ.

Details

最初のベクトル中のタイの場合,二番目の値がタイブレークに使われる.もし値が依然タイを持てば,後者の引数中の値がタイブレークに使われる (最初の例を見よ).使われるソートは安定しており(method = "quick"を除く),任意の未解消のタイはそれらの元の順序で残される.

複素数値は最初実部に関して,それから虚部に関してソートされる.

文字列ベクトルのソート順序は使用中のロケールの照合列に依存する. Comparisonを見よ.

sort.listに対する既定メソッドは良い妥協点を持つ.メソッド "quick"は数値の xに対してだけ na.last = NAでサポートされている.安定ではないが,長いベクトルに対しては本質的に高速である.メソッド "radix"は範囲が 100,000未満の整数 xに対してだけ実装されている.そうした xに対してはこれは非常に高速(そして安定)であり,因子のソートには理想的である— R 3.0.0からこれは 100,000個未満の水準を持つ因子に対する既定メソッドである.(これは counting sortingとしても知られている.)

partial = NULLは Sの他の実装との互換性ためにサポートされているが,他の値は認められず順序は常に完全である.

クラス付きの R オブジェクトに対しては,ソートの順番は xtfrm から取られる:そのヘルプページが注意するように,これは適当なメソッドが定義されているか,又はis.numeric(x)が真でない限り遅い可能性がある.因子に対してはこれは内部コードに関してソートを行い,特に順序付き因子に対して相応しい.

Value

入力のどれかが 231 またはそれ以上の要素を持たない限り整数ベクトル.さもなければ倍精度値ベクトル.

Note

sort.listはリスト引数を持つ sortに対するメソッドとして間違って呼び出されることがあり,リストの xに対して適当なエラーを与える.

na.last = NAに対する挙動には歴史的な差異がある: sort.listは NAを取り除き,それから残りの要素の間で順序を計算する:orderは元のベクトルの NAでない要素の間で計算する.従って

x[order(x, na.last = NA)]zz <- x[!is.na(x)]; zz[sort.list(x, na.last = NA)]

となり,どちらも xの NAでない値をソートする.

R 3.1.0以前では method = "radix"は非負整数に対してのみサポートされていた.

Page 381: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

order 381

References

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

Knuth, D. E. (1998) The Art of Computer Programming, Volume 3: Sorting and Searching. 2nd ed.Addison-Wesley.

See Also

sort, rank, xtfrm.

Examples

require(stats)

(ii <- order(x <- c(1,1,3:1,1:4,3), y <- c(9,9:1), z <- c(2,1:9)))## 6 5 2 1 7 4 10 8 3 9rbind(x, y, z)[,ii] # 再並べ替えを示す(2,3番目の引数でタイ)

## y に関して減少順が必要と仮定.## 数値 'y' に対する簡単な解rbind(x, y, z)[, order(x, -y, z)]## より一般的には xtfrm を使うことが出来るcy <- as.character(y)rbind(x, y, z)[, order(x, -xtfrm(cy), z)]

## データフレームのソート:dd <- transform(data.frame(x, y, z),

z = factor(z, labels = LETTERS[9:1]))## Either as above {for factor 'z' : using internal coding}:dd[ order(x, -y, z), ]## もしくは第一列に沿って,二番目に沿ってタイ,, ... *任意の*番号の{列}:dd[ do.call(order, dd), ]

set.seed(1) # 再現可能な例:d4 <- data.frame(x = round( rnorm(100)), y = round(10*runif(100)),

z = round( 8*rnorm(100)), u = round(50*runif(100)))(d4s <- d4[ do.call(order, d4), ])(i <- which(diff(d4s[, 3]) == 0))# 2 箇所で,3列がタイブレイクの必要:d4s[ rbind(i, i+1), ]

## マッチしたベクトルを最初が増加順になるように再アレンジx <- c(5:1, 6:8, 12:9)y <- (x - 5)^2o <- order(x)rbind(x[o], y[o])

## na.last のテストa <- c(4, 3, 2, NA, 1)b <- c(4, NA, 2, 7, 1)z <- cbind(a, b)(o <- order(a, b)); z[o, ](o <- order(a, b, na.last = FALSE)); z[o, ](o <- order(a, b, na.last = NA)); z[o, ]

Page 382: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

382 outer

## 長いベクトルに対する速度例:x <- factor(sample(letters, 1e6, replace = TRUE))system.time(o <- sort.list(x)) ## 0.4 秒stopifnot(!is.unsorted(x[o]))system.time(o <- sort.list(x, method = "quick", na.last = NA)) # 0.1 秒stopifnot(!is.unsorted(x[o]))system.time(o <- sort.list(x, method = "radix")) # 0.01 秒stopifnot(!is.unsorted(x[o]))xx <- sample(1:26, 1e7, replace = TRUE)system.time(o <- sort.list(xx, method = "radix")) # 0.1 秒xx <- sample(1:100000, 1e7, replace = TRUE)system.time(o <- sort.list(xx, method = "radix")) # 0.5 秒system.time(o <- sort.list(xx, method = "quick", na.last = NA)) # 1.3 秒

outer Outer Product of Arrays

Description

配列 Xと Yの外積は次元 c(dim(X), dim(Y))の次の要素を持つ配列 Aである.A[c(arrayindex.x, arrayindex.y)]= FUN(X[arrayindex.x], Y[arrayindex.y], ...).

Usage

outer(X, Y, FUN = "*", ...)X %o% Y

Arguments

X, Y 関数 FUNへの最初と二番目の引数.普通ベクトルか配列.

FUN 外積に使われる関数で,match.fun を使って探される(特別な場合 "*"を除き).

... FUNに渡されるオプションの引数.

Details

Xと Yは FUNに対して相応しい引数でなければならない.FUNが呼び出される前に各々はrepにより長さが Xと Yの長さの積になるように拡大される.

FUNはこれら二つの拡大ベクトルを引数として(... 中の引数込みで)呼び出される.これはベクトル化された関数(又は素の名前)でなければならず,少なくとも二つの引数を持ち,最初(そして二番目)と同じ長さの値を返すことが期待されている.

もし存在すれば Xと Yの[次元]名が答にコピーされ,Xと Yの次元が連結された次元 (またはもし次元が存在しなければ長さ)が与えられる.

FUN = "*"は as.vector(X) %*% t(as.vector(Y))の特殊例として処理され,数値ベクトルと配列だけを意図している.

%o%は outer(x, y, "*")に対する二項演算子のラッパである.

Author(s)

Jonathan Rougier

Page 383: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Paren 383

References

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

See Also

通常の行列とベクトルの積については %*%: outerを用いた kronecker;非ベクトル化関数をベクトル化するには Vectorize.

Examples

x <- 1:9; names(x) <- x# 積と巾乗表x %o% xy <- 2:8; names(y) <- paste(y,":", sep = "")outer(y, x, "^")

outer(month.abb, 1999:2003, FUN = "paste")

## 三元乗積表:x %o% x %o% y[1:3]

Paren Parentheses and Braces

Description

丸括弧 (と波括弧 {は Rの .Primitive関数である.

実効的には,(は構文的に恒等関数 function(x) xに等しいが,{はもう少し興味深い.実例を見よ.

Usage

( ... )

{ ... }

Value

(は引数の評価結果.これは可視と設定されており,従ってトップレベルでつかわれると自動的にプリントされる.

{は最後に評価された表現式の結果.最後の結果は可視化されている.

References

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

See Also

R言語自体で使われる他のオブジェクトについては if, return等.

演算子の優先度については Syntax.

Page 384: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

384 parse

Examples

f <- get("(")e <- expression(3 + 2 * 4)identical(f(e), e)

do <- get("{")do(x <- 3, y <- 2*x-3, 6-x-y); x; y

## 違いに注意(2+3){2+3; 4+5}(invisible(2+3)){invisible(2+3)}

parse Parse Expressions

Description

parseは構文解析されたが未評価の表現式をリストとして返す.

Usage

parse(file = "", n = NULL, text = NULL, prompt = "?",keep.source = getOption("keep.source"), srcfile,encoding = "unknown")

Arguments

file そこから表現式を読み取るコネクション又はファイルや URLの名前を与える文字列.もし fileが ""で textが無いかまたは NULLならば入力はコンソールから取られる.

n 整数(又は整数に変換される).構文解析する表現式の最大数.もし nがNULLか負又は NAなら入力はその全体にわたって構文解析される.

text 文字列.構文解析されるテキスト.要素はファイルの一行であるかのように扱われる.他の R オブジェクトは可能なら文字列に変換される.

prompt キーボードから構文解析するときにプリントされるプロンプト. NULLは Rのプロンプトを使うことを意味する,getOption("prompt").

keep.source 論理値;もし TRUEならソース参照情報を保つ.

srcfile NULL,文字列,もしくは srcfileオブジェクト.‘詳細’節を見よ.

encoding 入力文字列に対して仮定されるエンコーディング.もし値が "latin1"か "UTF-8"ならそれが文字列を Latin-1や UTF-8であるとわかっているとマークされる:入力の再エンコーディングには使われない.後者を行うにはエンコーディングを conの一部分とするか,options(encoding=)経由で行う: fileの例を見よ.

Page 385: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

parse 385

Details

もし textが(変換後)ゼロより大きな長さを持てば,それが fileに優先して使われる.

R の全てのバージョンは行末が LF (Unix で使われる), CRLF (DOS/Windows で使われる),または CR (古典的な Mac OSで使われる)で終わるコネクションからの入力を受け付ける.最終行は EOLマーカーを欠いた不完全行でも良い.

入力がコンソールから取られるときは,n = NULLは n = 1に等しく,そして n < 0はEOF文字まで読み取られる. (EOF文字はWindowsのフロントエンドでは Ctrl-Zである.)行長の上限はコンソールから読み取る場合は 4095バイトである (これは下限を課すかもしれない: ‘An Introduction to R’を見よ).

srcfile の既定値は次のように設定される.もし keep.source が TRUE で無ければ,srcfileの既定値は文字列で "<text>"か from fileから導かれるものである.keep.sourceが TRUEなら,もし textが使われると,srcfileはテキストを含む srcfilecopyとされる.もし文字列が fileに対して使われると,そのファイルを参照する srcfileオブジェクトが使われる.

srcfileが文字列ならば,エラーメッセージは名前を含むが,ソース参照情報は結果に付け加えられない. srcfileが srcfileオブジェクトならば,ソース参照情報は保たれる.

Value

型 "expression"のオブジェクトで,もし非負整数として指定されれば最大 n個の要素を持つ.

もし srcfileが NULLで無ければ "srcref"属性が各要素に対応する srcref記録のリストを含む結果に付加され, srcfileのコピーを含む "srcfile"属性が付加され,構文解析されたテキスト全てに対応する srcrefを含む "srcfile"属性が付加される.詳細な構文解析情報が "srcfile"属性中に保管され, getParseDataで回収できる.

構文解析のエラー(不完全な表現式を含む)はエラーを起こす.

結果中の文字列は,もし encoding が "latin1" か "UTF-8" であるか,またもし全てがLatin-1か UTF-8ロケール中の既知のエンコードを持つ要素を持つ textが与えられると,宣言されたエンコーディングを持つようになる.

部分構文解析

構文解析中に構文エラーが起きると,codeparseはエラーを発生する.部分構文解析データはもしそれが srcfileオブジェクトならば srcfile引数中に保管され,そして text引数がテキストを提供するために使われる.他の場合はエラーが起きた時失われる.

部分構文解析データは srcfileオブジェクトに適用された getParseDataを使って回収することが出来る.構文解析は不完全であるから,それは典型的に存在しない "parent"項目への参照を含む.

References

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

Murdoch, D. (2010). Source References. The R Journal 2/2, 16-19.

Page 386: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

386 paste

See Also

scan, source, eval, deparse.

ソース参照情報はデバッグ(例えば setBreakpointを見よ)とプロファイリング(Rprofを見よ)に使うことが出来る.これは getSrcrefや関連関数で調べることができる.より詳細な情報が getParseDataを使って得られる.

Examples

cat("x <- c(1, 4)\n x ^ 3 -10 ; outer(1:7, 5:9)\n", file = "xyz.Rdmped")# ファイル "xyz.Rdmped" からの三つの文を構文解析するparse(file = "xyz.Rdmped", n = 3)unlink("xyz.Rdmped")

# 構文エラーになる部分構文解析txt <- "x <- 1an error"sf <- srcfile("txt")try(parse(text = txt, srcfile = sf))getParseData(sf)

paste Concatenate Strings

Description

文字列に変換後ベクトルを連結する.

Usage

paste (..., sep = " ", collapse = NULL)paste0(..., collapse = NULL)

Arguments

... 文字列に変換される一つ又はそれ以上の Rオブジェクト.

sep 項を分離する文字列.NA_character_は不可.

collapse 結果を分離するオプションの文字列.NA_character_は不可.

Details

pasteはその引数を as.character)を使って文字列に変換し,そしてそれらを (sepで与えられた文字列でそれらを分離し)連結する.もし引数がベクトルならば,それらは項毎に連結され一つの文字列を与える.ベクトル引数は必要に応じてリサイクルされ,長さゼロの引数は ""にリサイクルされる.

paste()は文字列欠損値 NA_character_を "NA"に変換するが,これは例えば二つのベクトルを結合するときは好ましくないかもしれず,例えば paste("the value of p is ", p)中では非常に好ましいかもしれない.

paste0(..., collapse)は paste(..., sep = "", collapse)と同値であるが,少し効率的である.

Page 387: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

paste 387

もし collapseに対して値が提供されると,結果中の値は単一の文字列に連結され,要素は collapseの値で分離されている.

Value

連結された値のベクトル.これはもし全てのオブジェクトがそうであれば collapseがNULLで無い限り長さがゼロになる. collapseが NULLならば単一の空文字列になる.

もし結果の要素中のどれかが UTF-8 (そしてどれもがエンコーディング "bytes"と宣言されていなければ) (Encodingを見よ)ならばその要素は UTF-8になる.さもなければ現在のエンコーディングで,その場合もし現在のロケールが Latin-1か UTF-8で少なくとも一つの対応入力 (分離子を含む)が宣言されたエンコーディングを持ち全ての入力が ASCIIか宣言されていれば,要素のエンコーディングが宣言される.

もしある要素への入力がエンコーディング "bytes"と宣言されていれば,要素のどれもが翻訳されず,結果の要素はエンコーディング "bytes"を持つ.もし collapseが NULLでなければ,これはまた二番目の縮約フェイズにも適用されるが,幾つかの翻訳は最初のフェイズ中でオブジェクトを一緒に結合して行われるかもしれない.

References

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

See Also

toString は典型的に paste(*, collapse=", ") を呼び出す. as.character, substr,nchar, strsplit を用いた文字列操作; cat は連結しファイルに書き出す.そして C風の文字列構成には sprintf.

プロットの注釈中で pasteを使う ‘plotmath’.

Examples

## 一つのベクトルを渡すと paste0 と paste は as.character のように動作する.paste0(1:12)paste(1:12) # 同じas.character(1:12) # 同じ

## 複数のベクトルを paste0 に渡すとそれらはベクトル化されて連結される.(nth <- paste0(1:12, c("st", "nd", "rd", rep("th", 9))))

## paste は同様に動作するが各入力を空白で分離する.## リサイクル規則は各入力を最長の入力と同じ長さにすることを注意.paste(month.abb, "is the", nth, "month of the year.")paste(month.abb, letters)

## 分離記号は sep 引数で変更でき,複数の文字で良い.paste(month.abb, "is the", nth, "month of the year.", sep = "_*_")

## 出力を単一の文字列に潰すには collapse 引数を渡す.paste0(nth, collapse = ", ")

## 長さ1の入力には collapse 引数よりも sep 引数を使うpaste("1st", "2nd", "3rd", collapse = ", ") # 恐らく期待したものと異なるpaste("1st", "2nd", "3rd", sep = ", ")

Page 388: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

388 path.expand

## sep と collapse 引数を同時に使うことが出来る.paste(month.abb, nth, sep = ": ", collapse = "; ")

## 長い文字列を処理するには paste() を strwrap() と併用すると役に立つ(title <- paste(strwrap(

"Stopping distance of cars (ft) vs. speed (mph) from Ezekiel (1930)",width = 30), collapse = "\n"))

plot(dist ~ speed, cars, main = title)

path.expand Expand File Paths

Description

例えば先頭のチルドをユーザのホームディレクトリに置き換えて (もしそのプラットフォームで定義されていれば)パス名を展開する.

Usage

path.expand(path)

Arguments

path 一つもしくは複数のパス名を含むベクトル.

Details

Rのある種の Unix構築では先頭の ~userは userのホームディレクトリに展開されるが,readlineがインストールされていない Unixバージョンではそうはならない.Rがオプション ‘--no-readline’付きで起動された時も同じである.

対話的なセッションででは capabilities("cledit")は readlineが利用可能かどうか報告する.

See Also

basename, normalizePath.

Examples

path.expand("~/foo")

Page 389: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

pcre_config 389

pcre_config Report Configuration Options for PCRE

Description

この Rセッションで使用中の PCREのバージョンに対する幾つかのコンフィギュレーションオプションを報告する.

Usage

pcre_config()

Value

名前付き論理値ベクトルで,現在次に要素を持つ

UTF-8 UTF-8入力のサポート.必要.Unicode properties

正規表現中の ‘\p{xx}’と ‘\P{xx}’に対するサポート.望ましく幾つかの CRANパッケージが使う.

JIT just-in-timeのコンパイルに対するサポート.速度の点で望ましい (しかし PCRE 8.20以来ある種のアーキテクチャではコンパイル時オプションとしてのみ利用できる.)

See Also

PCREのバージョンについては extSoftVersion.

Examples

pcre_config()

pmatch Partial String Matching

Description

pmatchはその最初の引数の要素に対して,その二番目の要素の間からマッチを探す.

Usage

pmatch(x, table, nomatch = NA_integer_, duplicates.ok = FALSE)

Arguments

x マッチされる値:as.characterで文字列に変換される.ロングベクトルがサポートされている.

table マッチされる対象の値:文字列ベクトルに変換される.ロングベクトルはサポートされていない.

nomatch マッチしない場合と複数の部分マッチ位置の場合に返される値.これは整数に変換されることを注意する.

duplicates.ok table中の要素は二度以上使われるべきか?

Page 390: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

390 polyroot

Details

挙動は duplicates.okの値によって異なる.最初にこれが真の場合を考える.最初の正確なマッチは考慮され,その位置が記録される.ユニークな部分マッチは考慮され,もしあれば記録される. (部分マッチは xの要素の全体が tableの要素の先頭とマッチした時に起こる.)最後に xの全ての残りの要素はマッチしないと見做される.更に,空の文字列はどれともマッチせず,空の文字列に正確なマッチをするものはない.これは例えば文字列添字の部分マッチングに対する適切な挙動である.

もし duplicates.okが FALSEならば,一度マッチした tableの値は以降のマッチ探しからは除外される.この挙動は Rの引数マッチングのアルゴリズムと同値であるが,空の文字列の扱いだけが違う(引数マッチングではこれは正確なマッチと部分的なマッチの後任意の残りの引数とマッチする).

charmatchは duplicates.okが真の pmatchに似るが,違いはそれがマッチなしと曖昧な部分マッチを区別する点にある.それは空の文字列にマッチし,多重の正確なマッチを認めない.

NA値はそれらが文字列定数 "NA"であるかのように扱われる.

Value

xと同じ長さの整数ベクトル(もし nomatch = NAならば NAを含むかもしれない)で,マッチした table中の要素の添字を与える.

References

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

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.

See Also

match, charmatchそして match.arg,関数の引数のマッチング等には match.fun,より一般的(正規表現)な文字列のマッチングには match.call,grep等.

Examples

pmatch("", "") # NApmatch("m", c("mean", "median", "mode")) # NA を返すpmatch("med", c("mean", "median", "mode")) # 2 を返す

pmatch(c("", "ab", "ab"), c("abc", "ab"), dup = FALSE)pmatch(c("", "ab", "ab"), c("abc", "ab"), dup = TRUE)## comparecharmatch(c("", "ab", "ab"), c("abc", "ab"))

polyroot Find Zeros of a Real or Complex Polynomial

Description

実数又は複素数係数の多項式のゼロ点を見つける.

Page 391: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

pos.to.env 391

Usage

polyroot(z)

Arguments

z 多項式係数の増加順のベクトル.

Details

次数 n− 1の多項式

p(x) = z1 + z2x+ · · ·+ znxn−1

はその係数ベクトル z[1:n] で与えられる. polyroot は p(x) の n − 1 個のゼロ点をJenkins-Traubアルゴリズムを用いて計算する.

もし係数ベクトル zが最高次数にゼロを持てばそれらは捨てられる.

次数の最大値はないが,低次の多項式を除けば数値的安定性が問題になる.

Value

長さ n− 1の複素数値ベクトルで,nは zの最大の非ゼロ要素の位置である.

Source

参考文献中の Fortranコードの Ross Ihakaによる翻訳, R Core Teamによる修正を含む.

References

Jenkins and Traub (1972) TOMS Algorithm 419. Comm. ACM, 15, 97–99.

See Also

任意の関数の根を見つける uniroot;デモディレクトリの complexと zeroの例.

Examples

polyroot(c(1, 2, 1))round(polyroot(choose(8, 0:8)), 11) # 結果を予想してみよ!for (n1 in 1:4) print(polyroot(1:n1), digits = 4)polyroot(c(1, 2, 1, 0, 0)) # 最初と同じ

pos.to.env Convert Positions in the Search Path to Environments

Description

検索パ中の指定位置の環境を返す.

Usage

pos.to.env(x)

Page 392: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

392 pretty

Arguments

x 1と検索パスの長さ length(search())の間の整数,又は -1.

Details

環境中のオブジェクトを操作する幾つかの R関数( getや ls等)は環境を検索パス中の対応位置で指定することを許す.pos.to.envはこれらの位置を環境に変換するプログラマーのための便宜関数である:ユーザは典型的にその必要はない.これはプリミティブである.

-1は関数がそこから呼び出された環境と解釈される.

これはプリミティブな関数である.

Examples

pos.to.env(1) # R_GlobalEnv# 次は基本環境を返すpos.to.env(length(search()))

pretty Pretty Breakpoints

Description

x中の値の範囲をカバーする約 n+1個の等間隔の‘丸められた’値を計算する.値はそれらが 10の巾乗の 1, 2又は 5倍になるように選ばれる.

Usage

pretty(x, ...)

## Default S3 method:pretty(x, n = 5, min.n = n %/% 3, shrink.sml = 0.75,

high.u.bias = 1.5, u5.bias = .5 + 1.5*high.u.bias,eps.correct = 0, ...)

Arguments

x as.numericで数値に変換可能なオブジェクト.

n 希望の区間数を与える整数. 整数でない値は丸められる.

min.n 区間の最少数を与える非負整数.もし min.n == 0なら pretty(.) は一つの値を返すかもしれない.

shrink.sml 正値で,range(x)が非常に小さい (普通ゼロ)の時既定のスケールがその分縮小される.

high.u.bias 非負数値で通常 > 1.区間単位は 10の巾乗である bの {1,2,5,10}倍に定められる.大きな high.u.biasの値はより大きなユニットを優先する.

u5.bias 因子 5を 2より優先する非負の乗数.既定と‘最適’: u5.bias = .5 + 1.5*high.u.bias.

Page 393: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

pretty 393

eps.correct 整数コードで {0,1,2} のどれか.もし 0 で無ければ,結果の境界がrange(x)の外部になるように境界でイプシロン修正が行われる;小さいケースでは修正は eps.correct >= 2の時だけ行われる.

... メソッドへの追加引数.

Details

prettyは x中の非有限な値を無視する.

d <- max(x) - min(x) ≥ 0とする.もし dが 0 (か非常に近い)でなければ,c <- d/nとする,さもなければ約 c <- max(abs(range(x)))*shrink.sml / min.n.すると 10の巾乗の bは 10blog10(c)c となり b ≤ c < 10bとなる.

そして基本ユニット uを c/b ∈ [1, 10)に応じて {1, 2, 5, 10}のどれかの b倍にする.そして二つの‘バイアス’係数は h = high.u.biasと f = u5.biasにする.

. . . . . . . . .

References

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

See Also

特に対数スケールの場合のプロットの見栄えの良い軸チック位置の計算には axTicks.

Examples

pretty(1:15) # 0 2 4 6 8 10 12 14 16pretty(1:15, h = 2) # 0 5 10 15pretty(1:15, n = 4) # 0 5 10 15pretty(1:15 * 2) # 0 5 10 15 20 25 30pretty(1:20) # 0 5 10 15 20pretty(1:20, n = 2) # 0 10 20pretty(1:20, n = 10) # 0 2 4 ... 20

for(k in 5:11) {cat("k=", k, ": "); print(diff(range(pretty(100 + c(0, pi*10^-k)))))}

##-- min(x) == max(x) の時にはもっと異様:pretty(pi)

add.names <- function(v) { names(v) <- paste(v); v}utils::str(lapply(add.names(-10:20), pretty))utils::str(lapply(add.names(0:20), pretty, min.n = 0))sapply( add.names(0:20), pretty, min.n = 4)

pretty(1.234e100)pretty(1001.1001)pretty(1001.1001, shrink = 0.2)for(k in -7:3)

cat("shrink=", formatC(2^k, width = 9),":",formatC(pretty(1001.1001, shrink.sml = 2^k), width = 6),"\n")

Page 394: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

394 print

Primitive Look Up a Primitive Function

Description

.Primitiveは名前により ‘プリミティブ’ (内部的に実装されている)な関数を調べる.

Usage

.Primitive(name)

Arguments

name R関数の名前.

Details

.Primitiveの .Internal関数に対する長所は引数の引き渡しが効率的である可能性と,例えば switch中におけるように,好ましい場所では位置によるマッチングが行われることである.より詳細については ‘R Internals Manual’を見よ.

すべてのプリミティブな関数は基礎名前空間中にある.

この関数はほとんど使われることはない:`name`や,より注意深く,get(name, envir = baseenv())が同じぐらい上手く動作し,どの関数がプリミティブかを知っている必要がない(これはRの進化とともに変わるであろう).

See Also

.Internal.

Examples

mysqrt <- .Primitive("sqrt")c.Internal # これはプリミティブで無いはずがない!`if` # バックチックが必要

print Print Values

Description

printはその引数をプリントし,それを不可視 (invisible(x)を使い)で返す.これは総称的関数で,新しいクラスに対し新しいプリントメソッドを容易に付け加えられる.

Page 395: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

print 395

Usage

print(x, ...)

## S3 method for class 'factor'print(x, quote = FALSE, max.levels = NULL,

width = getOption("width"), ...)

## S3 method for class 'table'print(x, digits = getOption("digits"), quote = FALSE,

na.print = "", zero.print = "0", justify = "none", ...)

## S3 method for class 'function'print(x, useSource = TRUE, ...)

Arguments

x メソッドの選択に使われるオブジェクト.

... 他のメソッドに・から渡される追加引数.

quote 論理値,文字列を引用符付きでプリントすべきかを指示する.

max.levels 整数,因子に対してどれだけ多くの水準をプリントすべきかを指示する;もし 0なら余分の "Levels"行はプリントされない.既定の NULLは水準が一行に幅 widthでプリントされるように max.levelsを選ぶことを伴う.

width max.levelsが NULLの時だけ使われる,上を見よ.

digits 最少の有効桁数,print.defaultを見よ.

na.print プリント出力中の NAを指示する文字列(又は NULL),print.defaultを見よ.

zero.print ゼロ(0)をどのようにプリントするかを指示する文字列;疎なテーブルに対しては "."を使うとより読みやすい結果が得られる,Matrix中の疎な行列のプリントに似る.

justify 文字列を左側で揃えるか,右側で揃えるか,又は左だけかを指示する文字列で,formatに渡される.

useSource もしあれば内部的に保存されたソースをプリントに使うべきかどうかを指示する論理値,例えば options(keep.source = TRUE) が使われていた場合.

Details

既定メソッド print.defaultは自分自身のヘルプページを持つ. print総称関数に対する全てのメソッドを得るには methods("print")を使う.

print.factorは幾つかのカスタム化が可能で,順序付き因子のプリントにも使える.

tableのプリントに対する print.tableは別のカスタム化を許す.R 3.0.0以来これは拡がりが 0のテーブルの場合だけ説明をプリントする(これは分類法が適正なデータを全く含まない時に起こり得る).

その主要な目的が特殊な printメソッドであるクラスの例については noquoteを見よ.

References

Chambers, J. M. and Hastie, T. J. (1992) Statistical Models in S. Wadsworth & Brooks/Cole.

Page 396: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

396 print.data.frame

See Also

既定メソッド print.default,そして上のメソッドのヘルプ;更に options, noquote.

よりカスタム化可能(しかし面倒)なプリントには cat, format又は write.簡単でプロトタイプ的なプリントメソッドに付いてはパッケージ tools中の .print.via.format.

Examples

require(stats)

ts(1:20) #-- プリントは"既定関数" --> print.ts(.) が呼ばれるfor(i in 1:3) print(1:i)

## 因子のプリントattenu$station ## 117 水準 -> 'max.levels' は幅に依存

## 順序因子:水準 "l1 < l2 < .."esoph$agegp[1:12]esoph$alcgp[1:12]

## 疎な(分割表)テーブルのプリントset.seed(521)t1 <- round(abs(rt(200, df = 1.8)))t2 <- round(abs(rt(200, df = 1.4)))table(t1, t2) # 単純print(table(t1, t2), zero.print = ".") # より読みやすい

## 非整数の "table" に対して同様:T <- table(t2,t1)T <- T * (1+round(rlnorm(length(T)))/4)print(T, zero.print = ".") # quite nicer,print.table(T[,2:8] * 1e9, digits=3, zero.print = ".")## 依然大きな T に対して少々 Matrix::Matrix(T) より劣る

## 空の広がりを持つ境界例:table(1, NA) # < table of extent 1 x 0 >

print.data.frame Printing Data Frames

Description

データフレームをプリントする.

Usage

## S3 method for class 'data.frame'print(x, ..., digits = NULL,

quote = FALSE, right = TRUE, row.names = TRUE)

Page 397: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

print.default 397

Arguments

x クラス data.frameのオブジェクト.

... print又は plotメソッドへのオプション引数.

digits 使われる最少の桁数: print.defaultを見よ.

quote 論理値,項目を引用符無しでプリントするかどうかを指示する.

right 論理値,文字列は右揃えされるかどうかを指示する.既定は右揃え.

row.names 論理値(又は文字列),行名をどのようにプリントするか,又はどの行名をプリントするかを指示する.

Details

これはデータフレームを列毎に整形する formatを呼び出し,それから文字列に変換し行列に対する printメソッドを選択適用する.

quote = TRUEの時は項目だけが引用化され,行名や列名は引用化されない.

See Also

data.frame.

Examples

(dd <- data.frame(x = 1:8, f = gl(2,4), ch = I(letters[1:8])))# 既定の print()

print(dd, quote = TRUE, row.names = FALSE)# 行名をなくし全ての項目を引用化する

print.default Default Printing

Description

print.defaultはその引数をプリントする総称的な関数 printの既定メソッドである.

Usage

## Default S3 method:print(x, digits = NULL, quote = TRUE,

na.print = NULL, print.gap = NULL, right = FALSE,max = NULL, useSource = TRUE, ...)

Arguments

x プリントされるオブジェクト.

digits digitsに対する nullでない値で,値をプリントする最少の有効桁数を指定する.既定の NULL は getOption("digits") を使う. (複素数に対する解釈は signifを見よ.)非整数値は切り下げられ,1以上で 22以下の値だけが受け入れられる.

quote 論理値,文字列 (character)を引用符付きでプリントするかどうかを指示する.

Page 398: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

398 print.default

na.print プリント出力中で NA値を指示するのに使われる文字列,又は NULL (‘詳細’を見よ).

print.gap 1024未満の非負整数又は NULL (1を意味する)で,プリントされるベクトル,行列そして配列中で隣り合う列間に置かれるスペース.

right 論理値,文字列を右揃えにするかどうかを指示する.既定は左揃え.

max maxに対する nullでない値で,プリントされる項目の最大数の近似値.既定値 NULL は getOption("max.print") を使う;より詳細はそのヘルプを見よ.

useSource 論理値で,言語オブジェクトを逆構文解析する代わりにソース参照やコピーを使うことを指示する.既定では利用可能ならオリジナルのソースを使う.

... 他のメソッドへ・から渡される追加引数.この関数では無視される.

Details

NAのプリントに対する既定値はこれが NAそして quote = FALSEで無い限り NA (引用符なしで)でプリントされる.それ以外は ‘<NA>’とプリントされる.

ベクトルを通じて同じ小数点以下の桁数が使われる.これは digitsが使われる最少の有効桁数を指定し,少なくともひとつの項目がその最少桁数で表現されることを意味する.しかしながら,もし全ての表現要素がその結果末尾にゼロを持つようになれば,小数点以下の桁が少なくともひとつの要素がゼロでない末位を持つように少なくされる.小数点以下の桁数は少なくとも一つの要素がそれを持つ時だけ導入される.

属性はそれらのクラスを尊重してプリントされる. digitsの値を print.defaultに利用するが,他のメソッドの既定値(呼びだされたメソッドに対して)を利用する.

オプション width はベクトル,行列そして配列のプリントを制御し,オプションdeparse.cutoffは呼び出しや公式のような言語オブジェクトのプリントを制御する.

methodsパッケージが付加されると,printは形式的クラスを持つ Rオブジェクトに対して,オプション引数無しで呼びだされた時 showを使う.

桁数の多い数

現在 digits >= 16である digitsの大きな数については,有効桁数の計算はプラットフォームの内部(Cライブラリ) ‘sprintf()’機能に依存することを注意しよう.

1バイトロケール

出力の間にプリント不可能な文字が現れるとそれは ANSI のエスケープ列の一つ(‘\a’,‘\b’, ‘\f’, ‘\n’, ‘\r’, ‘\t’, ‘\v’, ‘\\’そして ‘\0’: Quotesを見よ)として,それが失敗すると 3桁の 8進法コードで表現される:例えば Cロケール中の UKのポンド通貨符号は (もし正しく実装されていると) ‘\243’のようにプリントされる.どの文字がプリントできないかはロケールに依存する. (Windowsのあるバージョンはこれを誤って受け取るので,上位ビットを持つ全てのバイトは 1バイトロケールのWindowsではプリント可能と見做される.)

Unicodeと他の多バイトロケール

全てのロケールで,ASCII範囲(‘0x00’から ‘0x7f’)中の文字はもしプリント可能ならそのままで,さもなければ 1バイトロケールに対して説明されたように ANSIエスケープ列か3桁の8進法数としてプリントされる.

多バイトのプリント不可能な文字は ‘\uxxxx’ (8進法)や ‘\Uxxxxxxxx’ (16進法)のようなエスケープ列としてプリントされる.これは文字の幅広文字表現の内部コードである.も

Page 399: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

prmatrix 399

しこれが Unicode code pointとして知られていなければ警告が出る.既知の唯一の例外は商業 Unixでのある Japanese ISO 2022ロケールである.これはバイトの連結を用いる: Rは恐らくそうしたシステムではコンパイルできないであろう.

文字列ベクトル中に現在のロケールで不正な文字をもつ文字列があることはありうる.正しい文字の一部ではないバイトが現れるとそれは ‘\xab’の形の 16進数法でプリントされ,これが正しい文字が現れるまで続けられる. (UTF-8ではこれは僅かなエラーから素早く回復される.)

See Also

総称的な printと options. "noquote"クラスとプリントメソッド.

encodeStringは文字列をプリント用にエンコードする.

Examples

piprint(pi, digits = 16)LETTERS[1:16]print(LETTERS, quote = FALSE)

M <- cbind(I = 1, matrix(1:10000, ncol = 10,dimnames = list(NULL, LETTERS[1:10])))

utils::head(M) # より意味があるprint(M, max = 1000) # 90 列をプリントし,除外した 910 列についてメッセージ

prmatrix Print Matrices, Old-style

Description

Sとの互換性のために提供される行列のプリント用の以前のメソッド.

Usage

prmatrix(x, rowlab =, collab =,quote = TRUE, right = FALSE, na.print = NULL, ...)

Arguments

x 数値又は文字列行列.

rowlab, collab それぞれ列名と行名を与える(オプションの)文字列ベクトル.既定では dimnames(x)から取られる.

quote 論理値;もし TRUEで xがモード "character"ならば引用符 (‘"’)が使われる.

right もし TRUEで xがモード "character"ならば出力列は右揃えされる.

na.print NAをどのようにプリントとするか.もしこれが nullで無ければその値が NAの表現に使われる.

... printメソッドに対する引数.

Page 400: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

400 proc.time

Details

prmatrixは以前の print.matrixの形式で, Sの同名の関数に非常によく似ている.

Value

その引数 xを不可視で返す.

References

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

See Also

print.defaultと他の printメソッド.

Examples

prmatrix(m6 <- diag(6), rowlab = rep("", 6), collab = rep("", 6))

chm <- matrix(scan(system.file("help", "AnIndex", package = "splines"),what = ""), , 2, byrow = TRUE)

chm # print.matrix() を使うprmatrix(chm, collab = paste("Column", 1:3), right = TRUE, quote = FALSE)

proc.time Running Time of R

Description

proc.timeは現在実行中の Rプロセスがどれだけの実と CPU時間(秒単位)を既に使ったかを決定する.

Usage

proc.time()

Details

proc.timeは後方互換性のため5つの要素を返すが,その printメソッドは長さ 3の名前付きベクトルを返す.最初の二項目は現在の Rプロセスとそれが待っている任意の子プロセスのトータルのユーザとシステム CPU時間を,そして三番目の項目はプロセスが開始してからの‘実’経過時間を表す.

Value

長さ5の数値ベクトルであるクラス "proc_time"のオブジェクトで,現在実行中の Rプロセスのユーザ,システムとトータルの経過時間,そしそれが生み出し実行終了を待機している子プロセスのユーザとシステム時間の累計総計を含む.(printメソッドは子プロセス時間と主プロセスを連結する summaryメソッドを使う.)

‘ユーザ’と‘システム’時間は使用している OSからのものである.典型的にはこれは次のようになる.

Page 401: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

prod 401

‘ユーザ時間’は呼び出しプロセスのユーザ指示の実行に必要とされる CPU時間である.‘システム時間’は呼び出しプロセスの実行ために必要とされた CPU時間である.

Windowsでは子プロセスの時間は利用出来ず常に NAと与えられる.

時間の解像度はシステム固有であり, Unix 風システムではミリ秒で丸められている.現代のシステムではそれらはその程度の正確さであるが,過去のシステムでは 1/100か1/60秒の精度である.これらは典型的に 10ミリ秒で与えられる.

これはプリミティブな関数である.

References

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

See Also

R表現式の時間計測には system.timeそしてガベージコレクションにどれだけ時間がかかったかを知るには gc.time.

Examples

## R 表現式の時間計測の一つ方法:system.time の方が好ましいptm <- proc.time()for (i in 1:50) mad(stats::runif(500))proc.time() - ptm

prod Product of Vector Elements

Description

prodはその引数中にある全ての値の積を返す.

Usage

prod(..., na.rm = FALSE)

Arguments

... 数値,複素数値又は論理値ベクトル.

na.rm 論理値.欠損値を取り除くか?

Details

もし na.rmが FALSEならその任意の引数中の NA値は返り値を NAにする.さもなければNA値は無視される.

これは総称的な関数である:それに対するメソッドを直接に,または Summaryグループ総称的に定義できる.これが正しく動作するためには,引数 ... は名前無しで,選択適用はその最初の引数についてである必要がある.

真の論理値は 1,偽値は 0 と見做される.歴史的な理由から NULL が受け入れられnumeric(0)であるかのように扱われる.

Page 402: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

402 prop.table

Value

積である長さ1の数値(型 "double")か複素数値のベクトル. 注意:空集合の積は定義から1である.

S4 methods

これは S4 Summary グループ総称的関数である.それに対するメソッドはシグネチャx, ..., na.rmを使わなければならない..

References

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

See Also

sum, cumprod, cumsum.

プロットの注釈中での prodの利用については ‘plotmath’.

Examples

print(prod(1:7)) == print(gamma(8))

prop.table Express Table Entries as Fraction of Marginal Table

Description

これは初心者には実際は sweep(x, margin, margin.table(x, margin), "/")であるが,もし marginが長さゼロなら x/sum(x)が得られることが異なる.

Usage

prop.table(x, margin = NULL)

Arguments

x テーブル.

margin それに対してマージンを生成する添字,もしくは添字のベクトル.

Value

xのようなテーブルで marginに関して相対的に表現されている.

Author(s)

Peter Dalgaard

See Also

margin.table

Page 403: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

pushBack 403

Examples

m <- matrix(1:4, 2)mprop.table(m, 1)

pushBack Push Text Back on to a Connection

Description

テキスト行をコネクション上にプッシュバックする関数.そして現在どれだけの行がプッシュバックされているかを問い合わせる.

Usage

pushBack(data, connection, newLine = TRUE,encoding = c("", "bytes", "UTF-8"))

pushBackLength(connection)clearPushBack(connection)

Arguments

data 文字列ベクトル.

connection コネクション.

newLine 論理値.もし真なら新行がプッシュバックされている各文字列に付け加えられる.

encoding 文字列で部分マッチされる,詳細を見よ.

Details

幾つかの文字列が一度もしくは複数の機会にプッシュバックできる.そうした機会はスタックを形作るので,回収される最初の行は pushBackの最後の呼び出しの最初の行である.プッシュバックされる行は, readLinesと scanのような普通のテキスト読み取り関数により,コネクションからの通常の入力よりも速く読み取られる.

プッシュバックはテキストモードで読み取り可能なコネクションに対してだけ許される.

コネクションの全ての利用がプッシュバックを認めるわけではない.特に入力コネクションが直接静的に結線されている時が該当する.従って,例えば,コンソールとscan("")からの構文命令は stdinに関するプッシュバックを無視する.

マーク付きのエンコーディングを持つ文字列(Encodingを見よ)はがプッシュバックされると,それらはもし encoding = ""ならば現在のエンコーディングに変換される.もし変換できなければ文字は ‘<U+xxxx>’ のように表現されるかもしれない.それらはもしencoding = "UTF-8"ならば UTF-8に変換され,又は encoding = "bytes"ならばそのままに残される.

Value

pushBackと clearPushBack()は不可視で何も返さない.

pushBackLengthは現在プッシュバックされている行数を返す.

Page 404: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

404 qr

See Also

connections, readLines.

Examples

zz <- textConnection(LETTERS)readLines(zz, 2)pushBack(c("aa", "bb"), zz)pushBackLength(zz)readLines(zz, 1)pushBackLength(zz)readLines(zz, 1)readLines(zz, 1)close(zz)

qr The QR Decomposition of a Matrix

Description

qrは行列の QR分解を計算する.

Usage

qr(x, ...)## Default S3 method:qr(x, tol = 1e-07 , LAPACK = FALSE, ...)

qr.coef(qr, y)qr.qy(qr, y)qr.qty(qr, y)qr.resid(qr, y)qr.fitted(qr, y, k = qr$rank)qr.solve(a, b, tol = 1e-7)## S3 method for class 'qr'solve(a, b, ...)

is.qr(x)as.qr(x)

Arguments

x QR分解を計算すべき数値もしくは複素数値行列.論理値行列は数値に変換される.

tol xの列中の線形従属性を検出する際の許容度. LAPACKが偽で xが実数の時だけ使われる.

qr qrによって計算される QR分解のタイプ.

y, b 方程式の右辺のベクトルもしくは行列.

a QR分解もしくは(qr.solveのみ)矩形行列.

k 実効的ランク.

Page 405: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

qr 405

LAPACK 論理値.実 x に対しては,もし真ならLAPACK,さもなければ LIN-PACK (既定値)を使う.

... 他のメソッドに・へ渡される追加引数.

Details

QR分解は多くの統計テクニックで重要な役割を果たす.特に与えられた行列 Aとベクトル bに対して方程式 Ax = bを解くのに使われる.回帰係数の計算と Newton-Raphsonアルゴリズムの応用で役に立つ.

関数 qr.coef, qr.residそして qr.fittedは QR分解 qrを用いて yを当てはめた時の係数,残差,そして当てはめ値を返す. (ピボットが使われた時は係数の幾つかは NAになる.) qr.qyそして qr.qtyはQ %*% yと t(Q) %*% yを返す.ここで Qは (完全) Q行列である.

上の関数の全ては,もしあれば xと yの dimnames (と names)を保存する.

solve.qrは qrオブジェクトに対する solveのメソッドである. qr.solveは方程式系をQR分解を使って解く:もし aが QR分解ならそれは solve.qrと同じであるが,もし aが矩形行列ならば QR分解がまず計算される.どちらも優決定的と劣決定的なシステムを扱い,もし適当ならば最少二乗フィットを与える.

is.qrは,もし xが名前 qr, rankそして qrauxを持つリストならば TRUEを返し,さもなければ FALSEを返す.

オブジェクトをモード "qr"に強制変換することは出来ない.オブジェクトは QR分解であるか無いかのどちらかである.

LINPACKインタフェイスは要素数が 231未満の行列 xに制限される.

qr.fittedと qr.residは LINPACKインタフェイスだけをサポートする.

基礎にある LAPACKコードの不成功の結果は正のエラーコードを持つエラーを与える:これらは FORTRANコードの詳細な吟味によってのみ解釈できる.

Value

LINPACK か LAPACK で計算された行列の QR 分解.返り値の成分は直接 DQRDC,DGEQP3, ZGEQP3が返す値と対応する.

qr xと同じ次元を持つ行列.上側三角部分は分解の Rを含み,下側三角部分は分解の Qに関する情報を含む (コンパクトな形で保管されている).DQRDCと DGEQP3が用いる保管形式は異なることを注意する.

qraux 長さ ncol(x)のベクトルでQに関する追加の情報を持つ.

rank 分解で計算された xのランク: LAPACKケースでは常にフルランク.

pivot 分解の途中で用いられたピボット操作に関する情報.

LAPACKにより計算された非複素数値のQRオブジェクトは値が TRUEの属性 "useLAPACK"を持つ.

Note

行列の行列式の計算には(本当にそれが必要か?) QR分解は固有値(eigen)を使うよりも遥かに効率的である. detを見よ.

LAPACK (複素数ケースを含み)の使用はピボットを用い,ランク落ち行列の検出を行わない.

Page 406: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

406 qr

Source

qr に付いては LINPACK ルーチン DQRDC と LAPACK ルーチン DGEQP3 と ZGEQP3. 更にLINPACKと LAPACKルーチンが qr.coef, qr.qyそして qr.atyに使われている.

LAPACKと LINPACKは http://www.netlib.org/lapackと http://www.netlib.org/linpackにある.それらのガイドは参考文献にリストされている.

References

Anderson. E. and ten others (1999) LAPACK Users’ Guide. Third Edition. SIAM.Available on-line at http://www.netlib.org/lapack/lug/lapack_lug.html.

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

Dongarra, J. J., Bunch, J. R., Moler, C. B. and Stewart, G. W. (1978) LINPACK Users Guide.Philadelphia: SIAM Publications.

See Also

行列の再構成については qr.Q, qr.R, qr.X. lm.fit, lsfit, eigen, svd.

(qrを用いた)行列式の計算については det.

Examples

hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }h9 <- hilbert(9); h9qr(h9)$rank #--> たった 7qrh9 <- qr(h9, tol = 1e-10)qrh9$rank #--> 9##-- 線形方程式 H %*% x = y を解く:y <- 1:9/10x <- qr.solve(h9, y, tol = 1e-10) # 又は同値な:x <- qr.coef(qrh9, y) #-- == であるが,solve(h9) %*% y よりははるかに良いh9 %*% x # = y

## 優決定的なシステムA <- matrix(runif(12), 4)b <- 1:4qr.solve(A, b) # or solve(qr(A), b)solve(qr(A, LAPACK = TRUE), b)# これは最少二乗解である,lm(b ~ 0 + A) を参照

## 劣決定的なシステムA <- matrix(runif(12), 3)b <- 1:3qr.solve(A, b)solve(qr(A, LAPACK = TRUE), b)# 解は一つのゼロを持つが,同じものとは限らない

Page 407: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

QR.Auxiliaries 407

QR.Auxiliaries Reconstruct the Q, R, or X Matrices from a QR Object

Description

それからオブジェクトが構成された元の行列を返す.又は分解の成分から計算する.

Usage

qr.X(qr, complete = FALSE, ncol =)qr.Q(qr, complete = FALSE, Dvec =)qr.R(qr, complete = FALSE, ...)

Arguments

qr QR 分解を表現するオブジェクト.これは典型的には先立つ qr 又はlsfitへの呼び出しに由来する.

complete 長さ 1の論理値. QまたはX 行列の任意の直交補完を作るべきかどうかを指示する.又は R行列が正方上側三角部分の下にゼロ値を付け加えて補完すべきかどうかを指示する.

ncol 範囲 1:nrow(qr$qr)中の整数.構成されたX 中にある列数. completeが FALSEの時の既定値はそれからオブジェクトが構成された元のX の最初の min(ncol(X), nrow(X))個の列. completeが TRUEの時の既定値はX が最初の ncol(X)個の列で残りの列に任意の直交補完(複素ケースではユニタリ補完)を持つ正方行列.

Dvec 対角部分の値のベクトル(行列ではない).返り値 Qの各列には対応する対角値が掛けられる.既定値は全ての 1.

... 追加の引数で,非既定のメソッドに渡される.

Value

qr.Xは ncol(X) <= nrow(X)ならば,qrオブジェクトがそれから構成された元のX を返す.もし completeが TRUEか,引数 ncolが ncol(X)より大きければ,Xの任意の直交(ユニタリ)補完からの追加の列が返される.

qr.Qは次数 nrow(X)の qrによって表現される直交(ユニタリ)変換である Qの一部又は全部.もし completeが TRUEならば Qは nrow(X)個の列を持つ.もし completeが FALSEならば Qは ncol(X)個の列を持つ.Dvecが指定されると, Qの各列には Dvec中の値が掛けられる.

qr.Q(qr, *) は qr.qy(qr, y) (“対角の” y) の特殊ケースで, qr.X(qr, *) は基本的にqr.qy(qr, R) (ピボット操作と dimnamesの設定別として)であることを注意する..

qr.Rは Rを返す.これはピボットされているかもしれない,例えばもし a <- qr(x)なら x[, a$pivot] = QR. Rの行数は nrow(X)か ncol(X)である (そして completeが TRUEか FALSEかに依存するかもしれない).

See Also

qr, qr.qy.

Page 408: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

408 quit

Examples

p <- ncol(x <- LifeCycleSavings[, -1]) # 'sr' ではないqrstr <- qr(x) # dim(x) == c(n,p)qrstr $ rank # = 4 = pQ <- qr.Q(qrstr) # dim(Q) == dim(x)R <- qr.R(qrstr) # dim(R) == ncol(x)X <- qr.X(qrstr) # X == xrange(X - as.matrix(x)) # ~ < 6e-12## この場合のようにピボット操作が無ければ X == Q %*% R:all.equal(unname(X),

unname(Q %*% R))

# ピボット操作の例x <- cbind(int = 1,

b1 = rep(1:0, each = 3), b2 = rep(0:1, each = 3),c1 = rep(c(1,0,0), 2), c2 = rep(c(0,1,0), 2), c3 = rep(c(0,0,1),2))

x # 特異,列 "b2" と "c3" が "余分"a <- qr(x)zapsmall(qr.R(a)) # 列は整数の b1 c1 c2 b2 c3a$pivotpivI <- sort.list(a$pivot) # 逆置換all.equal (x, qr.Q(a) %*% qr.R(a)) # 違う!stopifnot(all.equal(x[, a$pivot], qr.Q(a) %*% qr.R(a)), # TRUEall.equal(x , qr.Q(a) %*% qr.R(a)[, pivI])) # これも TRUE!

quit Terminate an R Session

Description

関数 quitやその別名 qは現在の Rセッションを終了する.

Usage

quit(save = "default", status = 0, runLast = TRUE)q(save = "default", status = 0, runLast = TRUE)

Arguments

save 環境(作業空間)を保存すべきかどうかを指示する文字列で, "no","yes", "ask"又は "default"のどれか一つ.

status もし関連すれば,OSに返される(数値的な)エラー状態.便宜的に 0が成功裏の完了を指示する.

runLast .Last()を実行すべきか?

Details

saveは "no", "yes", "ask"又は "default"のどれかでなければならない.最初のケースでは作業空間は保存されない.二番目ではそれは保存され,三番目ではユーザの指示を待ちそして終了しない決定も出来る.対話的な使用での既定は指示を待つであるが,コ

Page 409: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

quit 409

マンドライン引数で上書き出来る (これは非対話的な使用では提供されなければならない).

もし関数 .Last が存在し runLast が真ならば正常終了の直前に .Last() が実行される.もし対話的な使用で .Last関数中にエラーがあれば,制御はコマンドプロンプトに返され,従って関数を詳しく検査できる.システムの類似の関数 .Last.sys()があり,もしrunLastが真なら .Last()の後に実行される.

Rセッションの終了時に正確に何が起きるかは使用中のプラットフォームと GUIインタフェイスに依存する.典型的な流れは .Last()と .Last.sys()を実行し (runLastが偽で無い限り),要求されれば作業空間を保存する (そしてほとんどの場合セッションの履歴も保存する:savehistoryを見よ).それから終了時に実行するように設定されている任意の終了動作を実行し (reg.finalizerを見よ),全てのオープンされているグラフィックデバイスを閉じ,セッションの一時ディレクトリを取り除き,そして残っている任意の警告 (例えば .Last()やデバイスのクロージャからの)をプリントする.

ある種のエラー状態は R自体によって使われる.非対話的な使用に対する既定のエラーハンドラーは実効的に q("no", 1, FALSE)を呼び出しエラー状態 1を返す.エラー状態は Rの‘自殺’時に使われる,つまり破滅的な失敗である.他の小さな値が初期化の失敗に対する特定のポートによって使われる.ユーザは状態 10かそれ以上を使うことが勧められる.

statusの適正な値はシステム依存であるが,普通 0:255は適正である. (多くの OSは値の最後のバイトだけを報告するので値はモジュラス 256になる.しかし全てではない.)

警告

.Lastの値はエンドユーザが制御するためのものである:これはセッション中に例えばパッケージで後から置き換えることが出来るが,プログラム上は安全に使うことは出来ない.セッションの最後に実行されるコードを設定する別の方法は finalizer を使うことである: reg.finalizerを見よ.

Note

OS X上の R.app GUIはこれらの関数のそれ自体のバージョンを持つが, save引数に対する挙動が少し異なる (GUIのこのアクションに対する ‘Startup’優先度が考慮される).

References

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

See Also

起動時の設定には .First.

Examples

## Not run: ## Unix 風味の例.Last <- function() {

graphics.off() # プリント前にデバイスを閉じるcat("Now sending PDF graphics to the printer:\n")system("lpr Rplots.pdf")cat("bye bye...\n")

}quit("yes")## End(Not run)

Page 410: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

410 Quotes

Quotes Quotes

Description

Rに於ける様々な引用化の使用法の説明.

Details

三種類のタイプの引用化が Rの構文の一部分である:一重と二重引用符そしてバックチック(また逆引用符 ‘`’)である.加えて,バックスラッシュが文字定数中で以下の文字をエスケープ化するのに使われる.

文字定数

一重と二重引用符は文字列定数を区切る.それらは同じように使用できるが二重引用符の方が好ましい(そして文字定数は二重引用符を使ってプリントされる)ので,一重引用符は普通二重引用符を含む文字定数を区切る時だけ使われる.

バックスラッシュは文字定数中でエスケープ列を開始するのに使われる.以下の表中に無い文字のエスケープ化はエラーになる.

一重引用符で区切られた文字定数中の一重引用符と二重引用符で区切られた文字定数中の二重引用符はバックスラッシュでエスケープ化する必要がある.

‘\n’ 新行

‘\r’ キャリッジリターン‘\t’ タブ‘\b’ バックスペース‘\a’ 警告(ベル)‘\f’ フォームフィード‘\v’ 垂直タブ‘\\’ バックスラッシュ ‘\’‘\’’ ASCIIアポストロフ ‘’’‘\"’ ASCII引用符 ‘"’‘\‘’ ASCIIグレーブアクセント(バックチック) ‘‘’‘\nnn’ 与えられた8進法コード(1, 2または3つの数字)の文字列‘\xnn’ 与えられた16進法コード(1または2つの数字)の文字列‘\unnnn’ 与えられたコード(1から4つの数字)のユニコード文字列‘\Unnnnnnnn’ 与えられたコード(1から8つの16進数字)のユニコード文字列

最後の二つの別の形式は ‘\u{nnnn}’と ‘\U{nnnnnnnn}’である.ユニコードのエスケープ列を除く全ては,もし allowEscapes = TRUEならば,文字列を scanと read.tableで読み込む際にも使える.ユニコードのエスケープは現在のロケールの文字列に無いユニコード文字の入力にも使える(文字列が内部的に UTF-8で保管される時).

構文解析器は単一の文字列中の8進/16進数とユニコードエスケープの双方の使用を認めない.

これらの形式はプリント不可能な文字セット(バックスラッシュを含む)のプリントの際に print.defaultで使える.

Page 411: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

R.Version 411

埋め込みヌルは文字列中に許されないので,文字列中でヌル (‘\0’のような)を使うと文字列はその箇所で切り詰められる (普通警告が出る).

名前と識別子

識別子は文字,数字,ピリオッド(.)そしてアンダスコアの系列からなる.数字やアンダスコアから始まってはならないし,数字の後にピリオッドがアッてはならない.予約語Reservedは適正な識別子ではない.

文字の定義は現在のロケールに依存するが,アスキー数字だけが数字とされる.

そうした識別子はまた構文名として知られ,Rのコード中で直接使うことが出来る.引用化すればほとんどいつも他の名前も使うことが出来る.好ましい引用符はバックチック(‘`’)であり,構文逆解析 deparseは普通それを使う.しかし多くの状況で一重・二重引用符による引用化も使うことが出来る (文字定数はしばしば名前に変換されるように).バックチックが本質的な一つの場合は公式中で変数名を区切る時である:formulaを見よ.

See Also

構文の他の様相については Syntax.

英語のテキストの引用化については sQuote.

OS命令の引用化については shQuote.

マニュアル ‘R Language Definition’.

R.Version Version Information

Description

R.Version()は稼働中の Rのバージョンに関する詳細な情報を与える.

R.versionはこの情報を保持するリスト変数である (そして versionはそのコピーで Sとの互換性のため存在する).

Usage

R.Version()R.versionR.version.stringversion

Details

これは R が構築された OS の詳細を与え,現在それが稼働している OS のものではない(そのためには Sys.infoを見よ).

OS名は期待されるものと異なるかもしれない:例えば OS X Mavericks 10.9.4は自分を‘darwin13.3.0’と識別し,Linuxは普通 ‘linux-gnu’,そして Solaris 10は ‘solaris2.10’になる.

Page 412: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

412 R.Version

Value

R.Versionは以下の文字列成分を持つリストを返す

platform Rが構築されたプラットフォーム.CPU-VENDOR-OSの形の三組でコンフィギュアスクリプトにより決定される.例えば "i686-unknown-linux-gnu"や "i386-pc-mingw32".

arch Rが構築された,または目的のアーキテクチャ (CPU).

os 基礎にあるオペレーティング・システム.

system CPUと OS,コンマで仕切られる.

status バージョンのステータス(例えば "alpha")

major 主バージョン数

minor 副バージョン数,パッチレベルを含む

year バージョンが作られた年

month バージョンがリリースされた月

day バージョンがリリースされた日

svn rev 副バージョンの改定数,"unknown" か一つの数でなければならない.(数の範囲や,‘M’または ‘S’がついた数はこの Rを構築したソースが一貫していないことを指示する.)

language 常に "R".

version.string 上の情報を連結した文字列で,プロット等に有用.

R.versionと versionは printメソッドを持つクラス "simple.list"のリスト.

Note

R.version$osをコードを実行中のプラットフォームのテストのために使わないこと.代わりに .Platform$OS.typeを使う.OSが少々異なれば, Rのバージョンが異なった時のように,異なった R.version$osの値を報告するかもしれない.

R.version.string は単純化と後方互換性のための R.version$version.string のコピーである.

See Also

追加情報は sessionInfo;典型的に Rコードの内部で使われる getRversion, .Platform,Sys.info.

Examples

require(graphics)

R.version$os # 自分がどれだけ幸運かチェックするため...plot(0) # 任意のプロットmtext(R.version.string, side = 1, line = 4, adj = 1) # 有用な右下のノート

## OS X を検出する良い方法:if(grepl("^darwin", R.version$os)) message("running on OS X")

Page 413: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Random 413

Random Random Number Generation

Description

.Random.seedは整数ベクトルであり,Rにおける乱数生成に対する乱数発生器(RNG)の状態を保持する.これは保存でき回復できるが,ユーザが変更すべきではない.

RNGkindは使用中の RNGの種類を確認したり設定したりするためのよりわかりやすいインタフェイスを提供する.

RNGversionは乱数発生器を Rの初期バージョンのそれに設定する(再現性のため)ために使える.

set.seedは乱数種を指定するお勧めの方法である.

Usage

.Random.seed <- c(rng.kind, n1, n2, ...)

RNGkind(kind = NULL, normal.kind = NULL)RNGversion(vstr)set.seed(seed, kind = NULL, normal.kind = NULL)

Arguments

kind 文字列または NULL.もし kindが文字列ならば Rの RNGを希望の種類に設定する.既定値には "default"を使う. NULLの解釈は ‘詳細’を参照.

normal.kind 文字列もしくは NULL.もしこれが文字列ならば正規乱数発生手法を設定する.Rの既定手法に戻るには "default"を使う. NULLは何も変更しない.

seed 一つ数字で整数と解釈される.もしくは NULL (‘詳細’を見よ).

vstr バージョン数を含む文字列,例えば "1.6.2"

rng.kind 上の kindに対する 0:k中の整数コード.

n1, n2, ... 整数.幾つ必要かは詳細を見よ(rng.kindに依存する).

Details

現在利用可能な RNGの種類は次の通りである.kindはこのリストに部分マッチングする.既定値は "Mersenne-Twister"である.

"Wichmann-Hill" 乱数種 .Random.seed[-1] == r[1:3] は長さ3の整数ベクトルで,各r[i]は 1:(p[i] - 1)中にある.ここで pは長さ3の素数ベクトル (30269, 30307, 30323).Wichmann–Hill生成器は周期 6.9536× 1012 (= prod(p-1)/4, Applied Statistics (1984) 33を見よ.これはオリジナル論文を修正している).

"Marsaglia-Multicarry": George Marsaglia がメイリングリスト ‘sci.stat.math’ で推薦している multiply-with-carry RNG が使われている.これは 260 以上の周期を持ち(Marsagliaによれば)すべてのテストに合格している.乱数種は二つの整数(何でも良い)である.

Page 414: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

414 Random

"Super-Duper": Marsaglia の70年代からの有名な Super-Duper 法.これはダイハードMTUPLEテストをパスしないオリジナル版.殆どの初期乱数酒で周期 ≈ 4.6 × 1018

を持つ.乱数種は二つの整数(最初の主は何でも良いが,二番目は奇数でなければならない).我々は Reeds et al (1982–84)の移植を用いた.二つの乱数種はそれぞれ Tauswortheと合同の多倍長整数である.Sの .Random.seed[1:12]との1対1対応が可能であるが公開する予定はないし,特にこの発生器は S-PLUSの最近のバージョン中のそれと正確には同じでない.

"Mersenne-Twister": Matsumoto and Nishimura (1998)から.周期 219937−1を持ち,623次元に(全周期で)一様分布する twisted GFSR法.乱数種は32ビット整数の624次元集合と,その集合中の現在の位置である.

"Knuth-TAOCP-2002": 減算を持つ lagged Fibonacci系列を用いた32ビット整数の GFSR法.つまり使われる漸化式は

Xj = (Xj−100 −Xj−37) mod 230

で,乱数種は最後の100個の数(実際は101個の数が記録され,最後はバッファの巡回的シフト).周期は約 2129.

"Knuth-TAOCP": Knuth (1997)の初期のバージョン.2002版は初期のバージョンと後方互換性を持たない:乱数種からの GFSRの初期化が変更されている. Rは報告されている弱点である連続する乱数種を認めず,乱数種をすぐに撹拌する.

この生成器の初期化は Rのインタプリタコードでなされるため,些少であるが感じられるほどの時間を必要とする.

"L’Ecuyer-CMRG": L’Ecuyer (1999)の ‘combined multiple-recursive generator’.各要素はフィードバック乗算生成器で三つの整数要素を持つ:従って乱数種は長さ6の (符号付き)整数ベクトル.周期は約 2191.

乱数種の6要素は内部的に32ビットの符号なし整数と見做される.最初の3つ,最後の3つはどちらも全てゼロであってはならず,それぞれ 4294967087 と 4294944443以下である.

これはそれ自体特に興味はないが,パッケージ parallel中の並列ストリームに対する基礎を提供する.

"user-supplied": ユーザ提供の生成器.詳細は Random.userを見よ.

normal.kind は "Kinderman-Ramage", "Buggy Kinderman-Ramage" (set.seed 用ではない),"Ahrens-Dieter", "Box-Muller", "Inversion" (既定),もしくは "user-supplied". (inver-sion法については qnormを参照せよ.)バージョン 1.7.0以前の Kinderman-Ramage生成器(今や "Buggy"と呼ばれている)は幾つかの近似エラーを持ち.過去の結果の再生以外の目的で使うべきではない."Box-Muller"生成器は正規乱数の対を発生しそれを順次返すという意味で状態依存である.状態はそれが選択されたり kindが変更される度にリセットされる (例えそれが現在の正規乱数発生器であっても).

set.seedは一つの整数引数を元に必要なだけの乱数種を設定する.これは小さな整数引数の指定で全く異なる乱数種を得る簡単な方法であり,またより複雑な乱数種の適正なセットを得ることを目的にしている (特に "Mersenne-Twister"と "Knuth-TAOCP").異なった seedの値が RNGの異なった seedを生成する保証はない.しかしながら例外は極めて稀である.もし seed = NULLとともに呼び出されると,それはあたかもいかなる乱数種もまだ設定されていないかのように再初期化する(‘ノート’を見よ).

RNGkindまたは set.seed中で kind = NULLまたは normal.kind = NULLを呼び出すと現在選択されている生成器を選択する (作業スペースが復帰された場合は前のセッション中で使われていたものを含む):もし生成器が使われていなかった場合は "default"を選択する.

Page 415: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Random 415

Value

.Random.seedはその最初の要素が RNGと正規乱数発生器の種類である整数ベクトルである整数ベクトルである.最下位の二つの10進数は 0:(k-1)中にある.ここで kは利用可能な RNGの数である.百位の桁は正規乱数発生器のタイプを表す(0から始まる).

背景にある Cでは,.Random.seed[-1]は unsignedであり,符号なし整数の符号付き整数による表現のせいで Rでは .Random.seed[-1]は負になり得る.

RNGkindは呼び出し前に選択されている RNGと正規乱数発生器を要素に持つ長さ2の文字列ベクトルを,もしどちらも NULLでなければ不可視で,タイプはセッション開始時は既定値で始まり,作業空間中で RNGkindか .Random.seedを設定することで変更される.

RNGversionは特定の Rのバージョン中の既定値に関して RNGkindと同じ値を返す.

set.seedは不可視値 NULLを返す.

Note

最初乱数種は存在しない;必要とされた時新しい種が現在の時間とプロセスIDから創りだされる.従って既定では異なったセッションは異なったシミュレーション結果を与えるであろう.しかしながらもし前の作業スペースが復帰された場合は,種は前のセッションから復帰されるかもしれない.

.Random.seedは,少なくともシステム生成器に対しては,一様乱数発生器に対する種を保存する.これは必ずしも他の生成器の状態を保存せず,特に Box–Muller正規乱数発生器の状態は保存しない.もし後で作業を再生したければ,.Random.seedを設定するよりも set.seedを呼び出す(kindと normal.kindに対する明確な値とともに使うのが好ましい).

オブジェクト .Random.seedはユーザの作業スペース中だけで眺めることが出来る.

RNGの低位のビットのランダム性を信頼してはならない.提供される殆どの一様乱数発生器は32ビットの整数値を返し,それが倍精度実数に変換されるので,最大で 232 個の異なった値しか取らず,長い間には重複した値を返すであろう(Wichmann-Hill法は例外で,最低で30個の変化するビットを持つ.)

Author(s)

RNGkindに対してはMartin Maechler. 現在の移植は B. D. Ripley

References

Ahrens, J. H. and Dieter, U. (1973) Extensions of Forsythe’s method for random sampling from thenormal distribution. Mathematics of Computation 27, 927-937.

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

Box, G. E. P. and Muller, M. E. (1958) A note on the generation of normal random deviates. Annalsof Mathematical Statistics 29, 610–611.

De Matteis, A. and Pagnutti, S. (1993) Long-range Correlation Analysis of the Wichmann-HillRandom Number Generator, Statist. Comput., 3, 67–70.

Kinderman, A. J. and Ramage, J. G. (1976) Computer generation of normal random variables.Journal of the American Statistical Association 71, 893-896.

Knuth, D. E. (1997) The Art of Computer Programming. Volume 2, third edition.Source code at http://www-cs-faculty.stanford.edu/~knuth/taocp.html.

Knuth, D. E. (2002) The Art of Computer Programming. Volume 2, third edition, ninth printing.

Page 416: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

416 Random

L’Ecuyer, P. (1999) Good parameters and implementations for combined multiple recursive randomnumber generators. Operations Research 47, 159–164.

Marsaglia, G. (1997) A random number generator for C. Discussion paper, posting on Usenet news-group sci.stat.math on September 29, 1997.

Marsaglia, G. and Zaman, A. (1994) Some portable very-long-period random number generators.Computers in Physics, 8, 117–121.

Matsumoto, M. and Nishimura, T. (1998) Mersenne Twister: A 623-dimensionally equidistributeduniform pseudo-random number generator, ACM Transactions on Modeling and Computer Simula-tion, 8, 3–30.Source code formerly at http://www.math.keio.ac.jp/~matumoto/emt.html.Now see http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/VERSIONS/C-LANG/c-lang.html.

Reeds, J., Hubert, S. and Abrahams, M. (1982–4) C implementation of SuperDuper, University ofCalifornia at Berkeley. (Personal communication from Jim Reeds to Ross Ihaka.)

Wichmann, B. A. and Hill, I. D. (1982) Algorithm AS 183: An Efficient and Portable Pseudo-random Number Generator, Applied Statistics, 31, 188–190; Remarks: 34, 198 and 35, 89.

See Also

復元・非復元無作為抽出は sample.

標準分布からの乱数発生用の関数は Distributions.

Examples

require(stats)

## 既定の乱数種は 626 個の整数であり,数個だけプリントするrunif(1); .Random.seed[1:6]; runif(1); .Random.seed[1:6]## 乱数種が無いと新しい種がランダムに作られる:rm(.Random.seed); runif(1); .Random.seed[1:6]

ok <- RNGkind()RNGkind("Wich") # ('kind' の部分マッチング)

## これは R 関数だけを使い Wichmann-Hill 法を実現:

p.WH <- c(30269, 30307, 30323)a.WH <- c( 171, 172, 170)next.WHseed <- function(i.seed = .Random.seed[-1])

{ (a.WH * i.seed) %% p.WH }my.runif1 <- function(i.seed = .Random.seed)

{ ns <- next.WHseed(i.seed[-1]); sum(ns / p.WH) %% 1 }rs <- .Random.seed(WHs <- next.WHseed(rs[-1]))u <- runif(1)stopifnot(next.WHseed(rs[-1]) == .Random.seed[-1],all.equal(u, my.runif1(rs))

)

## ----.Random.seed

Page 417: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Random.user 417

RNGkind("Super") # "Super-Duper" にマッチRNGkind().Random.seed # 新しい,Super-Duper に対応

## Reset:RNGkind(ok[1])

## ----sum(duplicated(runif(1e6))) # 既定の生成器に対しては約110## ほとんど確実に重複が期待されるqbirthday(1 - 1e-6, classes = 2e9) # 235,000

Random.user User-supplied Random Number Generation

Description

関数 RNGkindを使いユーザがコーディングした一様と正規乱数発生器が使用可能になる.詳細をここで紹介する.

Details

ユーザ固有の一様 RNGは動的に読み込まれたコンパイル済みコードのエントリポイントから呼び出される.ユーザはエントリポイント user_unif_rand を提供する必要がある.これは引数を待たず倍精度実数へのポインタを返す.以下の例は一般的なパターンを示すであろう.

オプションでユーザは user_unif_initへのエントリポイントを与えることができる.これは RNGkind (または set.seed)が呼び出された時 unsigned int引数とともに呼び出され,ユーザの RNGコードの初期化を可能にすることを意図している.引数は ‘乱数種’を設定するために使われることを意図している.これは set.seedへの引数であるか,もし RNGkindが呼び出されるときは本質的な乱数種である.

もしこれらの関数だけが提供されると, .Random.seed中には生成器の状態の情報は記録されない.オプションで関数 user_unif_nseedと user_unif_seedlocを提供できる.これは引数なしで呼び出され乱数種の数と乱数種の整数(特に ‘Int32’)配列へのポインタを返すべきである.そうすると GetRNGstateと PutRNGstateへの呼び出しはこの配列を.Random.seedへ/からコピーする.

ユーザ固有のの正規 RNGは単一のエントリポイント user_norm_randにより指定され,これは引数を持たず倍精度実数へのポインタをケアす.

警告

コンパイルされたすべてのコードと同様に,これらの関数にミスがあると Rはクラッシュするかもしれない.タイプの検査のため ‘R_ext/Random.h’をインクルードすること.

Examples

## Not run:## Marsaglia の乗算合同法 PRNG#include <R_ext/Random.h>

static Int32 seed;static double res;

Page 418: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

418 range

static int nseed = 1;

double * user_unif_rand(){

seed = 69069 * seed + 1;res = seed * 2.32830643653869e-10;return &res;

}

void user_unif_init(Int32 seed_in) { seed = seed_in; }int * user_unif_nseed() { return &nseed; }int * user_unif_seedloc() { return (int *) &seed; }

/* ratio-of-uniforms for normal */#include <math.h>static double x;

double * user_norm_rand(){

double u, v, z;do {

u = unif_rand();v = 0.857764 * (2. * unif_rand() - 1);x = v/u; z = 0.25 * x * x;if (z < 1. - u) break;if (z > 0.259/u + 0.35) continue;

} while (z > -log(u));return &x;

}

## Unix 下で使う:R CMD SHLIB urand.cR> dyn.load("urand.so")> RNGkind("user")> runif(10)> .Random.seed> RNGkind(, "user")> rnorm(10)> RNGkind()[1] "user-supplied" "user-supplied"

## End(Not run)

range Range of Values

Description

rangeは与えられた全ての引数の最大値と最小値のベクトルを返す.

Usage

range(..., na.rm = FALSE)

Page 419: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

range 419

## Default S3 method:range(..., na.rm = FALSE, finite = FALSE)

Arguments

... 任意の数値もしくは文字オブジェクト.

na.rm 論理値で,NAを除外するかどうかを指示する.

finite 論理値で,全ての有限でない値を除外するかどうかを指示する.

Details

rangeは総称的な関数である:それに対するメソッドを直接または Summaryグループ総称関数の一部として定義できる.これが正しく動作するためには引数 ... は名前がなく,選択適用はその第一引数について行われるべきである.

もし na.rmが FALSEならば,任意の引数中の値 NAと NaNは返り値を NA値にする.さもなければ NA値は無視される.

もし finiteが TRUEならば,全ての有限値の最少と最大が計算される,つまり finite = TRUEは na.rm = TRUEを含む.

(NAを除いた後)空でない引数がない場合には特別な状況が起こる, minを見よ.

S4 methods

これは S4 Summaryグループメソッドの一部である.それに対するメソッドはシグネチャx, ..., na.rmを使わねばならない.

References

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

See Also

min, max.

パッケージ grDevices中のユーテリティ extendrange().

Examples

(r.x <- range(stats::rnorm(100)))diff(r.x) # 標本範囲

x <- c(NA, 1:3, -1:1/0); xrange(x)range(x, na.rm = TRUE)range(x, finite = TRUE)

Page 420: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

420 rank

rank Sample Ranks

Description

ベクトル中の値の標本ランクを返す.タイ(つまり等しい値)と欠損値は幾つかの仕方で処理される.

Usage

rank(x, na.last = TRUE,ties.method = c("average", "first", "random", "max", "min"))

Arguments

x 数値,複素数値,文字列,又は論理値ベクトル.

na.last NAの処理の制御用.もし TRUEならばデータ中の欠損値は最後に置かれる;もし FALSEならそれらは最初に置かれる;もし NAならそれらは取り除かれる;もし "keep"ならそれらはランク NAとして保たれる.

ties.method タイをどのように扱うかを指示する文字列, ‘詳細’を見よ;簡略化出来る.

Details

もし全ての成分が異なれば(そして NAが無ければ),ランクは問題なしに定義でき,値はseq_along(x) 中にある.幾つかが同じ値 (‘タイ’と呼ばれる)ならば,引数 ties.methodが対応する添字位置での結果を決定する.メソッド "first"は各タイ位置での添字の集合で増加順になるような置換を施す.メソッド "random"はこれらを無作為な順序に置く.一方既定値の "average"はそれらをそれらの平均値で置き換える.そして "max"と"min"はそれらをそれらの最大値と最小値にそれぞれ置き換える.後者はスポーツのランキングでは典型的である.

値 NAは決して等しいとは見做されない: na.last = TRUEで na.last = FALSEの時はこれらは x中に登場する順序で異なったランクを与えられる.

NB: rank 自体は総称的ではないが xtfrm はそうである.そして rank(xtfrm(x), ....)は xtfrmメソッドがあれば希望される結果を持つ.さもなければ rankは ==, >, is.naそしてクラス付きオブジェクトに対する抽出メソッドを用いるが,かなり遅い可能性がある.

Value

xと同じ長さのベクトルで,名前が xからコピーされる (na.last = NAでない限り,そしてその時は欠損値は除かれる).ベクトルは xがロングベクトルか ties.method = "average"でない限り整数型であり,さもなければ倍精度実数型である (タイの有無によらず).

References

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

Page 421: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

rapply 421

See Also

orderと sort; xtfrm,上を見よ.

Examples

(r1 <- rank(x1 <- c(3, 1, 4, 15, 92)))x2 <- c(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)names(x2) <- letters[1:11](r2 <- rank(x2)) # タイは平均化される

## rank() は "巾等" である:rank(rank(x)) == rank(x) :stopifnot(rank(r1) == r1, rank(r2) == r2)

## 平均化無しのランクrank(x2, ties.method= "first") # 最初に起きたものが勝つrank(x2, ties.method= "random") # タイを無作為にブレイクrank(x2, ties.method= "random") # そしてもう一度

## タイはタイのままで,平均を取らない(rma <- rank(x2, ties.method= "max")) # 古典的(rmi <- rank(x2, ties.method= "min")) # スポーツで使用stopifnot(rma + rmi == round(r2 + r2))

rapply Recursively Apply a Function to a List

Description

rapplyは lapplyの再帰的バージョンである.

Usage

rapply(object, f, classes = "ANY", deflt = NULL,how = c("unlist", "replace", "list"), ...)

Arguments

object リスト.

f 引数が一つの関数.

classes クラス名の文字列ベクトル,又は全てのクラスにマッチする "ANY".

deflt 既定の結果(how = "replace"ならば使われない).

how 三つの可能性に部分マッチする文字列:‘詳細’を見よ.

... fの呼び出しに渡される追加引数.

Details

この関数は二つの基本モードを持つ.もし how = "replace"ならばそれ自体はリストではなく classesに含まれるクラスを持つ各リスト要素は,その要素に fを適用した結果で置き換えられる.

もしモードが how = "list"か how = "unlist"ならばリストはコピーされ,そのリストでない要素が classesに含まれるクラスを持てば要素に fを適用した結果で置き換えら

Page 422: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

422 raw

れ,他の全ては defltで置き換えられる.最後に,もし how = "unlist"ならば結果に対して unlist(recursive = TRUE)が呼び出される.

構文は詳細で lapplyと異なる:特に引数は Cコードを呼び出す前に評価される.

Value

もし how = "unlist"ならベクトルで,さもなければ objectと類似したリスト.

References

Chambers, J. A. (1998) Programming with Data. Springer.(そこでは rapplyは簡単にしか説明されていない.)

See Also

lapply, dendrapply.

Examples

X <- list(list(a = pi, b = list(c = 1:1)), d = "a test")rapply(X, function(x) x, how = "replace")rapply(X, sqrt, classes = "numeric", how = "replace")rapply(X, nchar, classes = "character",

deflt = as.integer(NA), how = "list")rapply(X, nchar, classes = "character",

deflt = as.integer(NA), how = "unlist")rapply(X, nchar, classes = "character", how = "unlist")rapply(X, log, classes = "numeric", how = "replace", base = 2)

raw Raw Vectors

Description

型 "raw"のオブジェクトを作る,検査する.

Usage

raw(length = 0)as.raw(x)is.raw(x)

Arguments

length 希望の長さ.

x 強制変換されるオブジェクト.

Page 423: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

rawConnection 423

Details

バイト型は生のバイトを保持することを意図している.バイト列の部分列を取り出すこと,要素を置き換える (しかしバイト型ベクトルの要素によってだけ)ことが出来る.関係演算子(Comparisonを見よ,バイト表現の数値的順序を使う)がビット毎の論理演算子(Logicを見よ)のように提供できる.

バイト型ベクトルは各バイトが個別に16進数の対としてプリントできる.もし文字表現が欲しければ(プリント不可能な文字はエスケープ列として) rawToCharを使う.

バイト型への変換は入力値を小さな(10進法)整数として表現されているとして扱うので,入力は先ず整数に変換され,それから範囲 [0 ... 255]外や NAが 0 (nulバイト)とされる.

as.rawと is.rawはプリミティブな関数である.

Value

rawは指定された長さのバイト型ベクトルを作る.ベクトルの各要素は 0に等しい.バイト型ベクトルは固定長のバイト列を保持するのに使われる.

as.rawはその引数をバイト型に強制変換しようと試みる. (要素毎の)答は変換が成功しない限り 0になる (もしくは元の値が正当に 0に変換されても).

is.rawは typeof(x) == "raw"の時,そしてその時だけ真を返す.

See Also

charToRaw, rawShift等.

バイト型ベクトルに対するビット毎の演算には &.

Examples

xx <- raw(2)xx[1] <- as.raw(40) # NB, 丁度 40 では無い.xx[2] <- charToRaw("A")xx

x <- "A test string"(y <- charToRaw(x))is.vector(y) # TRUErawToChar(y)is.raw(x)is.raw(y)

isASCII <- function(txt) all(charToRaw(txt) <= as.raw(127))isASCII(x) # trueisASCII("\x9c25.63") # false (Latin-1 ではこれは UK ポンドでの額になる)

rawConnection Raw Connections

Description

入力と出力用バイト型コネクション.

Page 424: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

424 rawConnection

Usage

rawConnection(object, open = "r")

rawConnectionValue(con)

Arguments

object 文字列又はバイト型ベクトル.コネクションの記述.入力に対してはこれは Rのバイト型オブジェクトで,出力コネクションに対してはコネクションの名前.

open 文字列.標準的なコネクションのオープンモード.

con 出力バイト型コネクション.

Details

入力バイト型コネクションがオープンされ,バイト型ベクトルがコネクションオブジェクトが作られた時コピーされる.そして closeはコピーを破壊する.

出力バイト型コネクションがオープンされ,内部的に R のバイト型ベクトルが作られる.このバイト型ベクトルは rawConnectionValueを使って取り出せる.

コネクションが入出力用にオープンされると与えられた初期バイト型ベクトルはコネクションがオープンされた時コピーされる.

Value

rawConnectionに対してはクラス "rawConnection"のコネクションオブジェクトでクラス "connection"を継承する.

rawConnectionValueに対してはバイト型ベクトル.

Note

出力バイト型コネクションは内部バイト型ベクトルを呼び出しごとに更新するので,相対的に使うコストが高い (over-allocationが使われるものの),そして出力を収集するには匿名の file()コネクションを使うほうが良いかもしれない.

vsnprintf が必要な長さの出力を返さない(稀な)プラットフォームでは出力コネクションに対して一行 100,000文字の制限がある:それより長い行は警告無しに刈り詰められる.

See Also

connections, showConnections.

Examples

zz <- rawConnection(raw(0), "r+") # 空のバイト型ベクトルから開始するwriteBin(LETTERS, zz)seek(zz, 0)readLines(zz) # バイト型ベクトルは埋め込まれた nul を持つseek(zz, 0)writeBin(letters[1:3], zz)rawConnectionValue(zz)close(zz)

Page 425: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

rawConversion 425

rawConversion Convert to or from Raw Vectors

Description

型 "raw"のオブジェクトの変換と操作.

Usage

charToRaw(x)rawToChar(x, multiple = FALSE)

rawShift(x, n)

rawToBits(x)intToBits(x)packBits(x, type = c("raw", "integer"))

Arguments

x 変換又はシフトされるオブジェクト.

multiple 論理値:変換は一つの文字列にすべきかそれとも複数の個別の文字列にすべきか?

n シフトするビット数.正の数は右へシフトし負の数は左へシフトする:可能な値は -8 ... 8.

type 結果の型,部分的にマッチされる.

Details

packBitsはバイト型,整数又は論理値を受け付けるが,最後の二つは NAを含んではならない.

‘バイト’は必ずしも文字と同じではない.例えば UTF-8ロケール.

Value

charToRawは長さ 1の文字列をバイト型に変換する.変換は宣言されたエンコーディングに無関係に行われる (Encodingを見よ).

rawToCharは生のバイトを一つの文字列に,一つのバイトの文字列に変換する(0は ""になる). (一つの文字列は埋め込まれた nulを含むことが出来る;末尾の nulだけが許されそして取り除かれる.)どちらの場合も多バイトロケールで不正な結果をつくりだす可能性がある.例えば UTF-8を使った場合.もし multipleが真ならロングベクトルが許される.

rawShift(x, n)は x中のビットを n位置だけ右へシフトする,上の引数 nを見よ.

rawToBitsはバイト型ベクトルの長さの8倍の長さのバイト型ベクトルを返し,項目は 0か 1である.intToBitsは整数ベクトルの32倍の長さのバイト型ベクトルを返し,項目は 0か 1である. (整数でない数値は整数に切り詰められる.)どちらのケースも最も下位のビットが先にアンパックされる.

packBitsはその入力をパックする(バイト型か整数ベクトルに対しては最下位ビットだけ).バイト型か整数ベクトルに対しては最初に最下位ビットから.

Page 426: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

426 RdUtils

Examples

x <- "A test string"(y <- charToRaw(x))is.vector(y) # TRUE

rawToChar(y)rawToChar(y, multiple = TRUE)(xx <- c(y, charToRaw("&"), charToRaw("more")))rawToChar(xx)

rawShift(y, 1)rawShift(y, -2)

rawToBits(y)

showBits <- function(r) stats::symnum(as.logical(rawToBits(r)))

z <- as.raw(5)z ; showBits(z)showBits(rawShift(z, 1)) # 右へシフトshowBits(rawShift(z, 2))showBits(z)showBits(rawShift(z, -1)) # 左へシフトshowBits(rawShift(z, -2)) # ..showBits(rawShift(z, -3)) # シフトし尽くす

RdUtils Utilities for Processing Rd Files

Description

Rのドキュメント用(Rd)書式のファイルを他の書式に変換したり,それらから索引を作ったり,他の書式のドキュメントを Rd書式に変換するユーティリティ.

Usage

R CMD Rdconv [options] fileR CMD Rd2pdf [options] files

Arguments

file 処理されるファイルへのパス.

files 使用する Rドキュメントのソースを指定するファイル名のリスト,又はパッケージのソースがあるディレクトリへのパス.

options 処理を制御,又はユーティリティの用法とバージョンに関する情報を得るための追加のオプション.

Details

R CMD Rdconvは Rd書式を平文,HTML又は LaTeX書式に変換する:例を取り出すことも出来る.

Page 427: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

readBin 427

R CMD Rd2pdfは Rdソースから PDF出力を得るためのユーザレベルのプログラム.これは環境変数 R_PAPERSIZE (R CMDで設定され,既定値は Rのインストール時に設定される:R_PAPERSIZEに対する値は a4, letter, legalそして executive)そして R_PDFVIEWER (PDFビューアー)を使う.また RD2PDF_INPUTENCは inputencの代わりに使う inputenxという名前のパッケージの設定に使える.これは UTF-8エンコーディングをより良く利用するために必要かもしれない.

ユーティリティ foo の用法情報を得るためには R CMD foo --helpを使う.

See Also

マニュアル “Writing R Extensions”中の章 “Processing Rd format”.

readBin Transfer Binary Data To and From Connections

Description

コネクションかバイト型ベクトルからバイナリデータを読み取る,又は書き込む.

Usage

readBin(con, what, n = 1L, size = NA_integer_, signed = TRUE,endian = .Platform$endian)

writeBin(object, con, size = NA_integer_,endian = .Platform$endian, useBytes = FALSE)

Arguments

con コネクションオブジェクトか,ファイル又はバイト型ベクトルの名前を与える文字列.

what そのモードが読み込まれるベクトルのモードを与えるオブジェクトかモードを指定する長さ1の文字列: "numeric", "double", "integer","int", "logical", "complex", "character", "raw"のどれか.

n 整数.読み取られる記録の(最大)数.過大評価して良いが,n個の項目に対して予約される保管量が大きくなり過ぎないようにする.

size 整数.バイトストリーム中の要素毎のバイト量.既定 NA_integer_ では自然なサイズを使う.サイズの変更はバイト型と複素数値ベクトルではサポートされていない.

signed 論理値.サイズ 1と 2に対してだけ使われ,ファイル上の量が符号付きか符号無しかを決める.

endian ファイルに対するターゲットシステムのエンディアン ("big"か "little")."swap"の使用はエンディアンの交換を強制する.

object コネクションに書き込まれる Rオブジェクト.

useBytes writeLinesを見よ.

Page 428: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

428 readBin

Details

これらの関数はバイナリモードのコネクションと共に使われることを意図している.もし conが文字列なら,関数は関数呼び出しの間中開かれているバイナリモードコネクションを得るために fileを呼び出す.

もしコネクションが開かれると,それはその現在の位置から読み書きされる.もしそれがオープンされていないと,それは呼び出しの間中適当なモード (バイナリの読み書き)で開かれ,それから閉じられる.開かれたコネクションはバイナリモードで無ければならない.

もし readBinがバイト型ベクトルの conとともに開かれると,ベクトル中のデータが入力として使われる.もし writeBinがバイト型ベクトルの conとともに開かれると,それは単にバイト型ベクトルが返されなければならないという指示である.

もし sizeが指定されオブジェクトの自然なサイズでなければ,ベクトルの各要素は書き込まれるか読み込まれる前に適当な型に変換される.可能なサイズは整数か論理値に対して 1, 2, 4そしてもしかすると 8で,数値に対してはもしかすると 12/16である. (変換はサイズ 1か 2の整数を読み込む時, signed = FALSEを除いて符号付き型として行われる.)サイズの変更は NAを保たない可能性が高く,拡張精度サイズはプラットフォームを跨ぐ可搬性を損なう可能性が高い.

readBinと writeBinは C風のゼロで終わる文字列を読み書きする.入力文字列は 10000文字に制限される. readCharと writeCharは固定長の文字列の読み書きに使える.文字列が現在のロケールのエンコーディングで正当かどうかのチェックはされない.

Rの欠損値と特殊値(Inf, -Infそして NaN)はマニュアル ‘R Data Import/Export’中で議論されている.

231 − 1バイトだけが一回の呼び出しで書き込める (そしてこれは 32バイトのプラットフォームではバイト型ベクトルの最大キャパシティである.

‘エンディアン’は size > 1に対して問題になり,可搬性のあるコードでは常に設定されなければならない (既定値は書き込みとそれからの読み込みが同じプラットフォーム上で行われる時だけ妥当である).

Value

readBinに対しては適当なモードで,長さが読み込む項目数のベクトル(n未満かもしれない).

writeBinに対してはバイト型ベクトル(もし conがバイト型ベクトルなら)又は不可視のNULL.

Note

サイズ 8 の整数の読み書きは C タイプの long がサイズ 8 バイトか, C タイプのlong longが存在しサイズが 8バイトの時利用できる.

sizeof(long double) (普通 12か 16バイト)の実数の読み書きは,そのタイプが利用できdoubleと異なる時だけ利用できる.

もし readBin(what = character())が不正に Cスタイルの文字列を含まないファイルに使われると,警告(普通多くの)が与えられる.ファイルやコネクションから,入力は長さ 10000の部分に分割され,任意の最終部分は捨てられる.

これらの関数をテキストモードのコネクションに対して使っても動作するかもしれないが,コネクションへのテキストモードのアクセスと混用してはならない.特にコネクションが encoding引数と共に開かれている場合が該当する.

Page 429: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

readBin 429

See Also

マニュアル sQuoteR Data Import/Export.

固定長の文字列の読み書きには readChar.

connections, readLines, writeLines.

long, long longそして long doubleのサイズについては .Machine.

Examples

zz <- file("testbin", "wb")writeBin(1:10, zz)writeBin(pi, zz, endian = "swap")writeBin(pi, zz, size = 4)writeBin(pi^2, zz, size = 4, endian = "swap")writeBin(pi+3i, zz)writeBin("A test of a connection", zz)z <- paste("A very long string", 1:100, collapse = " + ")writeBin(z, zz)if(.Machine$sizeof.long == 8 || .Machine$sizeof.longlong == 8)

writeBin(as.integer(5^(1:10)), zz, size = 8)if((s <- .Machine$sizeof.longdouble) > 8)

writeBin((pi/3)^(1:10), zz, size = s)close(zz)

zz <- file("testbin", "rb")readBin(zz, integer(), 4)readBin(zz, integer(), 6)readBin(zz, numeric(), 1, endian = "swap")readBin(zz, numeric(), size = 4)readBin(zz, numeric(), size = 4, endian = "swap")readBin(zz, complex(), 1)readBin(zz, character(), 1)z2 <- readBin(zz, character(), 1)if(.Machine$sizeof.long == 8 || .Machine$sizeof.longlong == 8)

readBin(zz, integer(), 10, size = 8)if((s <- .Machine$sizeof.longdouble) > 8)

readBin(zz, numeric(), 10, size = s)close(zz)unlink("testbin")stopifnot(z2 == z)

## 符号付きと符号なし整数zz <- file("testbin", "wb")x <- as.integer(seq(0, 255, 32))writeBin(x, zz, size = 1)writeBin(x, zz, size = 1)x <- as.integer(seq(0, 60000, 10000))writeBin(x, zz, size = 2)writeBin(x, zz, size = 2)close(zz)zz <- file("testbin", "rb")readBin(zz, integer(), 8, size = 1)readBin(zz, integer(), 8, size = 1, signed = FALSE)readBin(zz, integer(), 7, size = 2)readBin(zz, integer(), 7, size = 2, signed = FALSE)close(zz)

Page 430: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

430 readChar

unlink("testbin")

## バイト型の使用z <- writeBin(pi^{1:5}, raw(), size = 4)readBin(z, numeric(), 5, size = 4)z <- writeBin(c("a", "test", "of", "character"), raw())readBin(z, character(), 4)

readChar Transfer Character Strings To and From Connections

Description

文字列を,それらがコネクション上 nullで終了していることを仮定せずに,コネクションへ・から移動する.

Usage

readChar(con, nchars, useBytes = FALSE)

writeChar(object, con, nchars = nchar(object, type = "chars"),eos = "", useBytes = FALSE)

Arguments

con コネクションオブジェクト,又はファイルやバイト型ベクトルの名前を与える文字列.

nchars 整数ベクトルで,読み書きされる(未終了の)文字列の文字数単位の長さを与える.要素は非負で NAであってはならない.

useBytes 論理値:readCharに対しては,多バイトロケールで ncharsは文字数ではなくバイト数と見做すべきか? writeChar に対しては writeLines を見よ.

object コネクションに書き込まれる文字列ベクトルで,少なくとも ncharsの長さ.

eos ‘文字列の終端’: 文字列.各文字列の最後に書き込まれる終端子で,ASCII nulが続く;終端子が無ければ NULLを使う.

Details

これらの関数は C風のゼロで終了する文字列を読み書きする readBinと writeBinを補足する.これらは既知の長さの文字列用で,オプションで文字列の終端マークを書くことが出来る.これらは現在のロケールで適正な文字列だけを意図している.

これらの関数はバイナリモードのコネクションと共に使われることを意図している.もし conが文字列ならば,関数は関数呼び出しの間中開かれているバイナリモードのファイルコネクションを得るために fileを呼び出す.

もしコネクションが開かれると,それはその現在の位置から読み書きされる.もしそれが開かれていないと,それは呼び出しの間中適当なモード (バイナリの読み書き)で開かれ,それから閉じられる.開かれたコネクションはバイナリモードで無ければならない.

Page 431: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

readChar 431

もし readCharがバイト型ベクトルの conとともに開かれると,ベクトル中のデータが入力として使われる.もし writeCharがバイト型ベクトルの conとともに開かれると,それは単にバイト型ベクトルが返されなければならないという指示である.

ASCIIの nulを含む文字列は readCharで正しく読み取られるが,最初の nulで刈り詰められ警告が出る.

もし readCharに対して要求された長さがコネクション上で利用可能なデータよりも長ければ,利用できるものが返される. writeCharに対しては,もし多すぎる文字が要求されると出力はゼロで埋められ警告が出る.

欠損した文字列は NAとして書かれる.

Value

readCharに対しては長さが読み込まれた項目数の文字列ベクトル (length(nchars)より少ないかもしれない).

writeCharに対してはバイト型ベクトル(もし conがバイト型ベクトルなら)もしくは不可視の NULL.

Note

以前のバージョンの Rでは文字列中に埋め込まれた nulバイトが許されたが, R >= 2.8.0では許されない.readCharはそれに対して readBinがふさわしくない固定長のゼロで埋められたバイト欄を読むためによく使われた. readCharはもし埋め込みの nulが無ければ,依然としてそうした欄に使うことが出来る:さもなければ readBin(what = "raw")で代用できる.

ncharsは UTF-8でない多バイトロケール中ではバイト単位ではなく文字単位と警告と共に解釈される.

UTF-8読み込みでは適正チェックはほとんどされない.

これらの関数はテキストモードのコネクション上で使えるかもしれないが,コネクションへのテキストモードの書き込みと混用すべきではない.特にコネクションが encoding引数と共に開かれている場合が該当する.

See Also

マニュアル ‘R Data Import/Export’.

connections, readLines, writeLines, readBin

Examples

## 固定長文字列のテストzz <- file("testchar", "wb")x <- c("a", "this will be truncated", "abc")nc <- c(3, 10, 3)writeChar(x, zz, nc, eos = NULL)writeChar(x, zz, eos = "\r\n")close(zz)

zz <- file("testchar", "rb")readChar(zz, nc)readChar(zz, nchar(x)+3) # 終端子を正確に読む必要close(zz)unlink("testchar")

Page 432: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

432 readline

readline Read a Line from the Terminal

Description

readlineは(対話的な使用時に)端末から一行を読み込む

Usage

readline(prompt = "")

Arguments

prompt ユーザに入力を促すときにプリントされる文字列.普通スペース " "で終わる.

Details

プロンプト文字列は可能な最大長さで打ち切られる,普通 256文字(しかしソースコード中で変更できる).

これは対話的なセッション中でだけ使える.

Value

長さ1の文字列.結果からは先頭と末尾の空白とタブは取り除かれる.

非対話的な使用では結果はあたかも応答が返されるが値は ""であるかのようになる.

See Also

コネクションやファイルからテキスト行を読み込むには readLines.

Examples

fun <- function() {ANSWER <- readline("Are you a satisfied R user? ")## より良いバージョンは回答をより面倒なしでチェックし,## 恐らく再び入力を促す.if (substr(ANSWER, 1, 1) == "n")cat("This is impossible. YOU LIED!\n")

elsecat("I knew it.\n")

}if(interactive()) fun()

Page 433: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

readLines 433

readLines Read Text Lines from a Connection

Description

コネクションからテキスト行の一部又は全部を読み取る.

Usage

readLines(con = stdin(), n = -1L, ok = TRUE, warn = TRUE,encoding = "unknown", skipNul = FALSE)

Arguments

con コネクションオブジェクト又は文字列.

n 整数.読み取る行数(の最大数).負の値はコネクション上の入力の最後まで読み取ることを指示する.

ok 論理値.n > 0 行が読み取られる前にコネクションの最後に達してもOKか?もし偽ならエラーが生成される.

warn 論理値.テキストファイルが最後の EOLを欠いていたり,テキスト中に埋め込みの nulがあれば警告する.

encoding 入力文字列に対して仮定されるエンコーディング.これは文字列がエンコーディング Latin-1 や UTF-8 を持つことが知られているとマークする:入力の再エンコーディングには使われない.後者を行うにはエンコーディングをコネクション con の一部として指定するか,又はoptions(encoding=)を使う:例を見よ.

skipNul 論理値:nulはスキップすべきか?

Details

もし conが文字列ならば,関数は呼び出しの間中開かれているファイルコネクションを得るために fileを呼び出す.これは圧縮ファイルでも良い.

もしコネクションが開かれるとそれはその現在の位置から読み取られる.もしそれが開かれていないと呼び出しの間中 "rt"モードで開かれ,それからまた閉じられる.

もし最終行が不完全(最終 EOLマーカーが無い)ならば,動作はコネクションがブロックされているかどうかに依存する.ブロックされていないテキストモードのコネクションに対しては行は黙ってプッシュバックされる.他の全てのコネクションに対しては行は警告付きで受け入れられる.

どのようなモードでコネクションが開かれようと,任意の LF, CRLF又は CRは行の EOLマーカーとして受け入れられる.

入力ストリーム中の埋め込み nulは現在読込中の行を停止し,警告が出る(skipNul = TRUE又は warn = FALSEで無い限り).

もし con が既定の encoding 引数を持たない未だ開かれていないコネクションならば,テキストは UTF-8 に変換されそうしたものとして宣言される (そして readLines へのencoding引数は無視される).例を見よ.

Page 434: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

434 readRDS

Value

読み込んだ行数の長さの文字列.

結果の要素はもし encodingが "latin1"か "UTF-8"なら宣言されたエンコーディングを持つ.

Note

既定のコネクション stdinは con = "stdin"と異なるかもしれない:fileを見よ.

See Also

connections, writeLines, readBin, scan

Examples

cat("TITLE extra line", "2 3 5 7", "", "11 13 17", file = "ex.data",sep = "\n")

readLines("ex.data", n = -1)unlink("ex.data") # 後片付け

## ブロックの違いcat("123\nabc", file = "test1")readLines("test1") # 警告がでる行

con <- file("test1", "r", blocking = FALSE)readLines(con) # 空cat(" def\n", file = "test1", append = TRUE)readLines(con) # 両方を得るclose(con)

unlink("test1") # 後片付け

## Not run:# 'Windows Unicode' ファイルを読むA <- readLines(con <- file("Unicode.txt", encoding = "UCS-2LE"))close(con)unique(Encoding(A)) # UTF-8 である可能性が最も高い

## End(Not run)

readRDS Serialization Interface for Single Objects

Description

一つの Rオブジェクトをファイルに書き出し,そしてそれを回復する.

Usage

saveRDS(object, file = "", ascii = FALSE, version = NULL,compress = TRUE, refhook = NULL)

readRDS(file, refhook = NULL)

Page 435: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

readRDS 435

Arguments

object シリアル化される Rオブジェクト.

file Rオブジェクトが保存される,又は読み取られるコネクション又ファイルの名前.

ascii 論理値.もし TRUE か NA なら,ASCII 表現が書き込まれる;さもなければ(既定)バイナリなものが使われる. saveのヘルプのコメントを見よ.

version 使用する作業空間の書式バージョン. NULL は現在の既定バージョン(2)を指定する.バージョン 2以前はサポートされないので,これはそれ以降のバージョンがある時だけ関係する.

compress 名前付きファイルへの保存が "gzip"圧縮を使うかどうかを指示する論理値.又は "gzip", "bzip2"又は "xz"の一つで使用する圧縮の種類を指示する.fileがコネクションなら無視される.

refhook 参照オブジェクトを処理するフック関数.

Details

これらの関数は一つの Rオブジェクトをコネクション(普通ファイル)に保存し,そしてオブジェクトを,よくある例では別の名前で,回復する.これは saveと loadとは異なる,これらは一つ又はそれ以上の名前付きオブジェクトを保存し,環境の中に復元する.これらは R自体で広く使われる.例えばパッケージのメタデータや help.searchデータベースを保管する:ファイル拡張子 ".rds"が最もしばしば使われる.

関数 serializeと unserializeはシリアル化への少々低レベルのインタフェイスを提供する: serialize によるコネクションへのシリアル化は readRDS によって読み戻され,逆も行われる.

これらのインタフェイスの全ては同じシリアル化書式を使い,それは R 1.4.0以来使われている(しかし新しいオブジェクトタイプが Rへ付け加えられるたびに時折拡張される).しかしながら saveは一つのオブジェクトのシリアル化の前に一つの行ヘッダ (保存される全てのオブジェクトの対リスト)を書き込む.

fileがファイル名の時圧縮は開かれたコネクションにより処理されるので,もしコネクションで処理されるのならば fileがコネクションの時だけ可能である.従って,例えば urlコネクションは gzconの呼び出し中にラップされる必要がある.

もしコネクションが与えられると,もし既に開かれていなければ関数の呼び出しの間中(バイナリモードで)開かれる:もし既に開かれていればそれは saveRDS(ascii = FALSE)に対するバイナリモードであるか,非アスキー保存されたものの読み込みでなければならない.

Value

readRDSに対しては Rオブジェクト.

saveRDSに対しては不可視の NULL.

See Also

serialize, saveそして load.

使われる書式の詳細はマニュアル ‘R Internals’.

Page 436: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

436 readRenviron

Examples

## 一つのオブジェクトをファイルに保存saveRDS(women, "women.rds")## 別の名前でそれを快福women2 <- readRDS("women.rds")identical(women, women2)## 又はコネクションを使ってオブジェクトを調べる,コネクションは必要に応じて開かれるcon <- gzfile("women.rds")readRDS(con)close(con)

## オブジェクトを回復するより面倒な方法## これは unserialize() との互換性を示すcon <- gzfile("women.rds", "rb")identical(unserialize(con), women)close(con)con <- gzfile("women.rds", "rb")wm <- readBin(con, "raw", n = 1e4) # サイズは推測close(con)identical(unserialize(wm), women)

## serialize() との書式互換性:con <- file("women2", "w")serialize(women, con) # ASCII, 非圧縮close(con)identical(women, readRDS("women2"))con <- bzfile("women3", "w")serialize(women, con) # バイナリ,bzip2 で圧縮close(con)identical(women, readRDS("women2"))

readRenviron Set Environment Variables from a File

Description

Startupに対するヘルプの中で説明されたような書式の ‘.Renviron’や ‘Renviron.site’のようなファイルを読み込み,ファイル中で定義された環境変数を設定する.

Usage

readRenviron(path)

Arguments

path ファイルへのパスを与える長さ 1の文字列ベクトル.サポートされていればチルド展開が行われる.

Value

ファイルが無事に読み込まれたかどうかを指示するスカラー論理値.不可視で返される.もしファイルが読み込みように開くことが出来なければ警告が与えられる.

Page 437: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Recall 437

See Also

ファイル書式については Startup.

Examples

## Not run:## 開始ファイルを再読込する(またはそれを vanilla セッションで読む)readRenviron("~/.Renviron")

## End(Not run)

Recall Recursive Calling

Description

Recallはそれが中から呼び出される関数名の仮置き場として使われる.これは後から名前が変わっても依然有効な再帰的関数の定義に使える,以下の例を見よ.

Usage

Recall(...)

Arguments

... 引き渡されるすべての引数.

Note

Recallは引数として関数を渡すと上手く動作しない.例えば apply関数族.

See Also

do.callと call.

匿名の再帰的関数を書く別の方法については local.

Examples

## 自明(しかし非効率的な!)例:fib <- function(n)

if(n<=2) { if(n>=0) 1 else 0 } else Recall(n-1) + Recall(n-2)fibonacci <- fib; rm(fib)## 再命名は Recall 無しには上手く動作しないであろうfibonacci(10) # 55

Page 438: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

438 reg.finalizer

reg.finalizer Finalization of Objects

Description

R関数をオブジェクトのガベージコレクション時や(オプションで) Rセッションの最後に呼び出されるように登録する.

Usage

reg.finalizer(e, f, onexit = FALSE)

Arguments

e 終末処理されるオブジェクト.環境か外部ポインターでなければならない.

f 終末処理時に呼び出される関数.終末処理されるオブジェクトである一つの引数を受け入れなければならない.

onexit 論理値:Rセッションの最後にオブジェクトが依然未収集であっても終末処理を実行するか?

Details

この関数の主目的は,外部対象(例えば一時ファイル)を参照するオブジェクトが R内部から最早参照されなくなった時に,後片付け動作を行うことにある.これは付値の際に決してコピーされないオブジェクトに対してだけ意味を持つので,環境や外部ポインターだけに制限される.

特にこれは .Lastを操作すること無しに Rセッションの終わりにプログラムコードを実行する手段を提供する.パッケージ中では名前空間中のオブジェクトに対して終末処理,もしくはそれがセッション中で行われるのなら名前空間がアンロードされた直後に,を設定するのは良い考えである.

Value

NULL.

Note

R のインタプリタは再入可能ではなく,終末処理は計算の途中で実行可能である.従って f から呼び出すと潜在的に安全でない関数が多数ある:問題を起こす一つの例はoptionsである. R 3.0.3以来終末処理はガベージコレクション時に予定されているが,それ以降は相対的に安全なときにだけ実行される.

See Also

ガベージコレクションとメモリ管理については gcと Memory.

Page 439: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

regex 439

Examples

f <- function(e) print("cleaning....")g <- function(x){ e <- environment(); reg.finalizer(e, f) }g()invisible(gc()) # クリーンアップを惹き起こす

regex Regular Expressions as used in R

Description

このヘルプページは grepと関連する関数 grepl, regexpr, gregexpr, sub and gsub,同じく strsplitによってサポートされている正規表現を解説する.

Details

‘正規表現’は文字列のセットを記述するパターンである. Rでは二つのタイプの正規表現が使われる. 拡張正規表現(既定)と perl = TRUEで使われるPerl風正規表現である.文字どおりの正規表現を使うと考えられる fixed = TRUEもある.

正規表現を使う他の関数(しばしば grep 経由で)には apropos, browseEnv, help.search,list.filesそして lsがある.これらは全て拡張正規表現を使う.

パターンはそれらが catでプリントされるように記述される: (例えばキーボードからRの文字列を入力する際はバックスラッシュは二重にする必要があることを忘れない).

長い正規表現は受け入れられるかもしれないし受け入れられないかもしれない: POSIX標準は 256バイトまでしか受け入れない.

拡張正規表現

この節は grep, regexpr, gregexpr, sub, gsubそして strsplitの既定モードで許される正規表現をカバーする.これらは POSIX 1003.2標準を使う:それは解釈に対するある種のスコープを許し,ここでの解釈は Rで現在使われているものである.この実装は標準に対する幾つかの拡張をサポートする.

正規表現は算術表現のようにより小さな表現へ様々な操作を使って構成される,表現の全体はゼロかそれ以上の文字とマッチする (もし useBytes = TRUEなら‘文字’を‘バイト’として読み込む).

基本的な構成ブロックは単一の文字とマッチする正規表現である.文字と数字を含む殆どの文字は自分自身にマッチする正規表現である.特別な意味を持つメタ文字は先頭にバックスラッシュを付けて引用化する.拡張正規表現に於けるメタ文字は‘. \ | ( ) [ { ^ $ * + ?’ であるが,これらが特殊な意味を持つかどうかは文脈によることを注意しよう.

非メタ文字をバックスラッシュでエスケープすることは実装依存である.現在の実装は‘\a’を ‘BEL’, ‘\e’を ‘ESC’, ‘\f’を ‘FF’, ‘\n’を ‘LF’, ‘\r’を ‘CR’そして ‘\t’を ‘TAB’として解釈する.(これらは Rの構文解析器により文字通りの文字列中で解釈されることを注意しよう.)

文字クラスは ‘[’ と ‘]’ で挟まれた文字のリストで,このリスト中の任意の単一の文字にマッチする;リスト中の最初の文字がカレット ‘^’ の時は例外で,リスト中にない任意の文字にマッチする.例えば正規表現 ‘[0123456789]’ は任意の一つの数字にマッチし, ‘[^abc]’ はもじ ‘a’, ‘b’ 又は ‘c’ 以外とマッチする.文字範囲は最初と最後の文字をハイフンで分離することで指定できる. (これらの解釈はロケールと

Page 440: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

440 regex

実装に依存するため,文字範囲は避けるのが好ましい. ) 全てのアスキー文字を指定する可搬性のある方法はそれら全てを文字クラスとして羅列れるすることである‘[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]’. (現在の実装はエンコーディングの数値的順序を使う.)

幾つかの名前付き文字クラスが予め定義されている.それらの解釈はロケールに依存する(localesを見よ);以下の解釈は POSIXロケールのそれである.

‘[:alnum:]’ 英数字文字:‘[:alpha:]’ と ‘[:digit:]’.

‘[:alpha:]’ アルファベット文字:‘[:lower:]’ と ‘[:upper:]’.

‘[:blank:]’ 空白文字:スペースとタブ,そして可能性としてロケール依存の non-breaking spaceのような文字.

‘[:cntrl:]’ 制御文字.アスキーではこれらの文字は8進法コード 000 から 037 そして177 (DEL)を持つ.別の文字セットではこれらはもしあれば同値な文字である.

‘[:digit:]’ 数字: ‘0 1 2 3 4 5 6 7 8 9’.

‘[:graph:]’ グラフィカルな文字: ‘[:alnum:]’ と ‘[:punct:]’.

‘[:lower:]’ 現在のロケールでの小文字.‘[:print:]’ プリント可能な文字:‘[:alnum:]’, ‘[:punct:]’ そしてスペース.

‘[:punct:]’ 句読点文字:‘! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~’.

‘[:space:]’ スペース文字:タブ,新行,垂直タブ,フォームフィード,キャリッジリターン,スペース,そして可能性として他のロケール依存文字.

‘[:upper:]’ 現在のロケールでの大文字.‘[:xdigit:]’ 16進数:

‘0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f’.

例えば ‘[[:alnum:]]’ は ‘[0-9A-Za-z]’を意味する.但し,後者はロケールと文字エンコーディングに依存する一方,前者はロケールと文字エンコーディングに依存しない. (これらのクラス名の鍵括弧はシンボリックな名前の一部であり,鍵括弧リストを区切る鈎括弧に加えて含める必要があることを注意しよう.)殆どのメタ文字は文字クラス中ではそれらの特殊意味を失う.文字通りの ‘]’を含めるには,それをリストの最初に置く.同様に,文字通りの ‘^’を含めるには,それを最初以外のどこかに置く.最後に,文字通りの ‘-’を含めるには,それを最初か最後に置く (もしくは,perl = TRUEに限るが,バックスラッシュを前に置く). (文字クラス中では ‘^ - \ ]’だけが特殊である.)

ピリオッド ‘.’は任意の一つの文字にマッチする.シンボル ‘\w’は単語文字(‘[[:alnum:]_]’の同義語)そして ‘\W’はその否定 (‘[^[:alnum:]_]’,拡張)にマッチする.シンボル ‘\d’,‘\s’, ‘\D’そして ‘\S’は数字とスペースクラス並びにそれらの否定 (これらは全て拡張である)を表す.

カレット ‘^’とドル記号 ‘$’はそれぞれ一行の先頭と末尾の空文字列にマッチする.シンボル ‘\<’と ‘\>’は単語の先頭と末尾の空文字列にマッチする.シンボル ‘\b’は単語のどちらかの端の空文字列にマッチし,そして ‘\B’は単語の端にはない空文字列にマッチする.( ‘単語’の解釈はロケールと実装に依存する:これらは全て拡張である.)

正規表現の後には幾つかの繰り返し指定子の一つが続くことが出来る:

‘?’ 先立つ項目はオプションで高々一回マッチされる.‘*’ 先立つ項目はゼロもしくはそれ以上の回数マッチされる.‘+’ 先立つ項目は一回もしくはそれ以上の回数マッチされる.‘{n}’ 先立つ項目は丁度 n回マッチされる.

Page 441: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

regex 441

‘{n,}’ 先立つ項目は n回もしくはそれ以上の回数マッチされる.

‘{n,m}’ 先立つ項目は少なくとも n回,しかし m回以下マッチされる.

既定では繰り返しは貪欲であり,可能な最大の繰り返しが使われる.これは指定子に ?を加えることで‘最少’に変更することが出来る. (近似的なマッチを許す更なる指定子がある:TREのドキュメントを見よ.)

正規表現は連結できる;結果の正規表現は連結された副表現にマッチする部分文字列を連結した任意の文字列にマッチする.

二つの正規表現は演算子 ‘|’を間に挟んで連結できる;結果の正規表現はどちらかの副表現にマッチした任意の文字列にマッチする.例えば ‘abba|cde’は文字列 abba又は cdeにマッチする.変更は文字クラス中では動作せず,‘|’はその文字通りの意味を持つ.

繰り返しは連結に優先し,連結は変更に優先する.これらの優先度規則を打ち消すために,副表現の全体を括弧で括ることが出来る.

後方参照 ‘\N’, ‘N = 1 ... 9’,は N番目の括弧で括られた正規表現の副表現にマッチされた副文字列にマッチする.(これは拡張正規表現に対する拡張である:POSIXはそれらを基本的なものについてだけ定義している.)

Perl風正規表現

grep, regexpr, gregexpr, sub, gsubそして strsplitに対する perl = TRUE引数は Perl 5.xと同じ構文と語義を持つ正規表現パターンマッチングを実装する PCREライブラリ,僅かな違いがある,に切り替える.

完全な詳細は自分のシステムか http://www.pcre.orgにあるソースの PCRE (PCRE2ではなく)のマンページ,特に man pcrepatternと manpcreapi,を参照されたい.もし PCREのサポートがソースから R内部にコンパイルされていれば(既定), PCREのバージョンはここで説明されたように 8.37である. (使用中のバージョンは extSoftVersionの呼び出しで分かる.)

Perlの正規表現はバイト単位又は(UTF-8)文字単位で行うことが出来る:後者は全ての多バイトロケールか,入力のどれかが UTF-8とマークされていれば使われる(Encodingを見よ).

拡張正規表現に対して説明された全ての正規表現は ‘\<’と ‘\>’を除けば受け入れられる:Perlでは全てのバックスラッシュ付きのメタ文字は英数字でありバックスラッシュ付きのシンボルは常に文字通りの文字と解釈される. ‘{’はもしそれが不正な区間指定の始点になるならば特殊ではない. 9以上の後方参照があっても良い(しかしながら sub中の置き換えは最初の 9個だけを参照できる).

文字範囲は単バイトロケールではバイトとして,または UTF-8モード中の Unicode pointとして文字の数値的順序で解釈される.従ってどちらのケースでも ‘[A-Za-z]’はアスキー文字を指定する.

UTF-8モードでは名前付き文字クラスはアスキー文字とだけマッチする:別法については下の ‘\p’を見よ.

Perl 拡張では構成 ‘(?...)’ は ‘?’ の直後に続くものに依存して様々なやり方で使われる.

Perl風のマッチングは幾つかのモードで動作可能である,モードは次のオプションで設定される: ‘(?i)’ (大・小文字を区別しない,Perlの ‘/i’に同値), ‘(?m)’ (複数行,Perlの ‘/m’に同値), ‘(?s)’ (単一行,従ってドットは全ての文字,新行にすらマッチする:Perl の ‘/s’ に同値) そして ‘(?x)’ (拡張,空白データ文字はエスケープされない限り無視され,コメントが許される:Perl の ‘/x’ に同値).これらは連結でき,従って例えば‘(?im)’は大・小文字を区別しない複数行マッチングを設定する.またこれらのオプションを文字の先頭にハイフンを付けて無効にでき,そして ‘(?im-sx)’の様に設定と無効化

Page 442: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

442 regex

を連結することも出来る.これらの設定はパターンの内部で適用でき,そうするとパターンの残りの部分に適用できる.Perlには無い追加のオプションは‘貪欲でない’モードを設定する ‘(?U)’がある(従ってマッチングは ‘?’ が繰り返し指定子の一部として使われない限り最少になり,そして使われれば貪欲になる).最初これらのオプションのどれもが設定されていない.

もし文字の列から特別な意味を取り除きたければ,それらを ‘\Q’と ‘\E’の間に置けば良い.これは PCREでは ‘$’と ‘@’は ‘\Q...\E’列中で字義通りの文字として扱われる一方,Perlでは ‘$’と ‘@’は複数の解釈を招く点で Perlと異なる.

エスケープ列 ‘\d’, ‘\s’そして ‘\w’はそれぞれ任意の小数点,スペース文字,そして‘ワード’文字 (現在のロケールでの文字,数字又はアンダスコア: UTF-8モードではアスキー文字と数字だけが考慮される)を表し,それらの大文字バージョンはそれらの否定を表す.垂直タブは PCRE 8.34 (R 3.0.3に含まれている)以前では Cロケールではスペース文字とは見做されなかった.列 ‘\h’, ‘\v’, ‘\H’そして ‘\V’は水平と垂直スペース又はそれらの否定とマッチする. (UTF-8モードではこれらは非アスキーの Unicode code pointにマッチする.)

追加のエスケープ列がある:‘\cx’は任意の ‘x’に対して ‘cntrl-x’を,‘\ddd’は8進法数字 (‘\1’から ‘\7’が常にそうであるように後方参照と解釈できない限り常に最大3桁),そして ‘\xhh’は二つの16進法数字を指定する. UTF-8ロケールでは ‘\x{h...}’は一つもしくはそれ以上の 16進法数で Unicode code pointを指定する. (これらの幾つかは Rの構文解析器により字義通りの文字列と解釈される).

文字クラスの範囲外では,‘\A’は対象の始点にマッチし (‘^’とは異なり複数行モードでも),‘\Z’は対象の終わり又は最後の新行の前までマッチする. ‘\z’は対象の終わりだけにマッチし,‘\G’は対象中の最初のマッチング位置にマッチする (これは Perlの直前のマッチの終わりとは微妙に異なる). ‘\C’は単一のバイトとマッチする.新行ともマッチするがその時は警告が出る.UTF-8モードでは ‘\R’は任意の Unicode新行文字(単に CRだけではなく)にマッチし,そして ‘\X’は拡張 Unicode列を形作る任意個数の Unicode文字とマッチする.

UTF-8モードではある種の Unicodeの特性は ‘\p{xx}’と ‘\P{xx}’によってサポートされるかもしれない.これはそれぞれ特性 ‘xx’を持つ文字と持たない文字にマッチする.サポートされている特性のリストについては PCRE のドキュメントを見よ.例えば ‘Lu’は‘大文字’で ‘Sc’は‘通貨シンボル’である. (このサポートは‘Unicode特性サポート’と共にコンパイルされた PCREライブラリに依存する:外部ライブラリはしていないかもしれない.これは pcre_configでチェックできる.)

列 ‘(?#’は次の閉じ括弧まで続くコメントの始まりをマークする.入れ子の括弧は許されない.コメントを形作る文字はパターンマッチングでは何の役割も果たさない.

もし拡張オプションが設定されると,文字クラスの範囲外のエスケープされていない ‘#’文字は,パターン中の次の新行直前まで続くコメントをもたらす.

パターン ‘(?:...)’ は括弧と同様に文字をグループ化するが,後方参照は出来ない.

パターン ‘(?=...)’ と ‘(?!...)’ は幅がゼロの正と負の先読み表明である:これらはもし現在の位置から前方の ... をマッチしようとする試みが成功(または失敗)するとマッチするが,処理中の文字列中のどの文字も使い果たさない.パターン ‘(?<=...)’ と‘(?<!...)’ は後方への同値物である:これらは ... 中の繰り返し修飾子や ‘\C’を認めない.

regexprと gregexprは‘名前付きの捕捉’をサポートする.もしグループが名前付き,例えば "(?<first>[A-Z][a-z]+)",ならば,名前によりマッチした位置も返される.(名前を用いた後方参照は subではサポートされていない.)

アトミックなグループ化,所有修飾子,そして条件付きと再帰的パターンはここではカバーされない.

Page 443: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

regmatches 443

Author(s)

このヘルプページは TREのドキュメントと POSIX標準,そして PCRE 8.36の pcrepatternのマンページにに基づく.

See Also

grep, apropos, browseEnv, glob2rx, help.search, list.files, lsそして strsplit.

TREのドキュメントは http://laurikari.net/tre/documentation/regex-syntax/).

POSIX 1003.2標準は http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html

pcrepatternの manページ ( http://www.pcre.org/original/pcre.txtの一部分),そしてPerl自体の実装は http://perldoc.perl.org/perlre.html.

regmatches Extract or Replace Matched Substrings

Description

regexpr, gregexprまたは regexecによって得られたマッチされたデータからマッチした部分文字列を取り出すまたは取り替える.

Usage

regmatches(x, m, invert = FALSE)regmatches(x, m, invert = FALSE) <- value

Arguments

x 文字列ベクトル.

m マッチされるデータのオブジェクト.

invert 論理値:もし TRUEならマッチしない部分文字列を取り出したり置き換える.

value マッチしたりマッチしなかった部分文字列(詳細を見よ)に対する適当な置き換え値を持つオブジェクト.

Details

もし invertが FALSE (既定)ならば,regmatchesはマッチデータで指定されるようなマッチされた部分文字列を取り出す.ベクトルのマッチデータ(regexprで得られるような)に対しては,空のマッチは捨て去られる;リストのマッチデータに対しては,空のマッチは空の成分 (長さゼロの文字列ベクトル)を与える.

もし invertが TRUEならば,regmatchesはマッチしなかった部分文字列を取り出す,つまり文字列は strsplitに似たマッチに従って分割される (ベクトルのマッチデータに対しては,最大で一つの分割が行われる).

マッチデータは同じ文字数を持つ xの修正バージョンにマッチされた正規表現から得ることが出来ることを注意する.

置き換え関数はマッチした又はマッチしなかった部分文字列に対して使うことが出来る.ベクトルのマッチデータに対しては,もし invertが FALSEならば, valueは m中のマッ

Page 444: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

444 remove

チされた要素の数の長さを持つ文字列ベクトルでなければならない.さもなければ,それは xと同じ長さを持つ文字列ベクトルのリストで,各々は必要な置き換えの数の長さでなければならない.置き換えは値を文字やリストに強制変換し,必要なだけ値を気前よくリサイクルする.欠損した置き換え値は許されない.

Value

regmatchesに対しては,もし mがベクトルで invertが FALSEならばマッチした部分文字列を持つ文字列ベクトル.さもなければマッチした又はマッチしなかった部分文字列を持つリスト.

regmatches<-に対しては更新された文字列ベクトル.

Examples

x <- c("A and B", "A, B and C", "A, B, C and D", "foobar")pattern <- "[[:space:]]*(,|and)[[:space:]]"## regexpr() によるマッチデータm <- regexpr(pattern, x)regmatches(x, m)regmatches(x, m, invert = TRUE)## gregexpr() によるマッチデータm <- gregexpr(pattern, x)regmatches(x, m)regmatches(x, m, invert = TRUE)

## 次を考えるx <- "John (fishing, hunting), Paul (hiking, biking)"## 人物の間のコンマ(プラス空白)で分割したいが,括弧で囲まれたホビーリスト中のコンマでは## そうしたくないと仮定する.一つのアイデアは分割に対して使われる部分にマッチするために## 括弧で囲まれた部分を空白にすることである.そして人物をマッチしなかった部分として取り出す.## 最初に括弧で囲まれたホビーリストにマッチする.m <- gregexpr("\\([^)]*\\)", x)## 与えられた文字数の空の文字列に対する小さなユーテリティを書くblanks <- function(n) {

vapply(Map(rep.int, rep.int(" ", length(n)), n, USE.NAMES = FALSE),paste, "", collapse = "")

}## 括弧部分を空白にした x のコピーを作る.s <- xregmatches(s, m) <- Map(blanks, lapply(regmatches(s, m), nchar))s## 分割されたマッチの位置を計算する## (空のマッチデータを持つ x に対して strsplit()## を呼び出すことは出来ないことを注意する).m <- gregexpr(", *", s)## そして最後にマッチしなかった部分を取り出す.regmatches(x, m, invert = TRUE)

remove Remove Objects from a Specified Environment

Page 445: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

remove 445

Description

removeと rmはオブジェクトを削除するのに使える.これらは文字列として連続して与える,又は文字列ベクトルのリストとして,又はそれらの結合として与えることが出来る.このようにして与えられた全てのリストが削除される.

もし envirが NULLならば現在アクティブな環境が最初に探索される.

もし inheritsが TRUEならば提供されたディレクトリの親が与えられた名前を持つ変数が現れるまで探される.見つからなかった各変数に対して警告がプリントされる.

Usage

remove(..., list = character(), pos = -1,envir = as.environment(pos), inherits = FALSE)

rm (..., list = character(), pos = -1,envir = as.environment(pos), inherits = FALSE)

Arguments

... 削除されるオブジェクト,名前(非引用化)又は文字列(引用化).

list 削除されるべきオブジェクトの名前を与える文字列.

pos どこで削除を行うか.既定では現在の環境を使う.他の可能性に付いては‘詳細’を見よ.

envir 使用する環境.‘詳細’を見よ.

inherits 環境の囲みフレームを吟味すべきか?

Details

pos引数はオブジェクトを削除すべき環境を幾つかの方法のいずれかで指定できる:整数として(searchリスト中の位置);検索リスト中の要素の名前;又は environmentとして (現在アクティブな関数呼び出しにアクセスする sys.frameの使用を含む). envir引数は環境を指定するもう一つの方法であるが,主に過去への互換性のためにある.

基本環境から変数を削除することは認められないし,基本名前空間やロックされた環境からも出来ない(lockEnvironmentを見よ).

Rの以前のバージョンは ... 中に文字列を与えると文字列中で名前が与えられたオブジェクトが削除されると不正確に主張していたが,これは文字列ベクトルを削除する.オブジェクトを文字列ベクトルとして与えるには list引数を使う.

References

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

See Also

ls, objects

Page 446: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

446 rep

Examples

tmp <- 1:4## クリーンアップrm(tmp)

## Not run:## 作業空間中の(ほとんど)全てを削除.## 警告が出るので,確信が無い限りこれをすべきではない.rm(list = ls())

## End(Not run)

rep Replicate Elements of Vectors and Lists

Description

repは x中の値を複製する.これは総称的な関数であり, (内部的)既定メソッドがここで解説される.

rep.intと rep_lenは二つの通常ケース用の速くて簡単なバージョンである.

Usage

rep(x, ...)

rep.int(x, times)

rep_len(x, length.out)

Arguments

x ベクトル(リストを含む任意のモードの)または因子 (rep のみ)またはPOSIXct,POSIXlt,Dateオブジェクト;又はそうしたオブジェクトを含む S4オブジェクト.

... 他のメソッドに・から渡される追加の引数.内部的な既定メソッドには次のものが含まれる:

times 長さが length(x)なら各要素を繰り返す(非負の)回数,もしくは長さが 1ならベクトル全体を繰り返す回数を与える整数ベクトル.負または NA値はエラーになる.

length.out 非負整数.出力ベクトルの希望の長さ.他の入力は整数ベクトルに変換され最初の要素が使われる.もし NAか不正なら無視される.

each 非負整数.xの各要素は each回繰り返される.他の入力は整数ベクトルに変換され最初の一つが使われる.もし NAか不正なら 1とされる.

times ... を見よ.

length.out 非負整数:出力ベクトルの希望の長さ.

Page 447: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

rep 447

Details

既定動作はあたかも呼び出しが

rep(x, times = 1, length.out = NA, each = 1)

であるかのように行われる.普通追加引数の単に一つが指定されるが,もし eachが他の二つのどちらかと共に指定されると,その複製は最初に実行され,それから timesかlength.outが意味するものが実行される.

もし timesが一つの整数であれば結果は入力全体をこの回数繰り返す.もし timesが xと同じ長さのベクトル(eachによる複製の後に)ならば結果は x[1]を times[1]回繰り返し, x[2]を times[2]回繰り返し,等としたものから成る.

length.outを timesの代わりに使うことができ,その場合 xはこの長さのベクトルを作るのに必要な回数繰り返される.もし両方が与えられると length.outが優先され timesは無視される.

timesの整数でない値はゼロに向かって切り下げられる.もし timesが計算された量なら小さな余裕を加えるか roundを使うのが用心深い.eachに対しても同様である.

もし xが長さゼロを持ち,そして length.outが提供され正ならば,値は抽出規則を使って埋められる,つまり原子的なベクトルに対しては適当なクラスの NA (バイト型ベクトルには 0)そしてリストには NULL.

Value

xと同じタイプのオブジェクト.

rep.intと rep_lenは属性を返さない (もし因子を返すときはクラスを除く).

repの既定メソッドはもし xが名前を持てば結果に名前 (ほとんど常に複製を含む)を与えるが,他の属性は保存しない.

Note

関数 rep.intは部分的に Sとの互換性のため,そして部分的に速度(特に名前を取り除ける場合)のために別の関数として提供された簡単なケースである.repの速度はそれ以来改善されたが,それでも rep.intは依然として xが名前を持つ時よりも少なくとも2倍速い.

名前 rep.intは repの総称化にはるかに先立つ.

関数 repはプリミティブであるが,引数名の(部分)マッチングは通常の関数に対するように実行される.

歴史的な理由から rep (だけは) NULLにも使える:結果は length.outが正の時ですら常に NULLである.

決してドキュメント化されていないが,これらの関数は常に表現式ベクトルにも使える.

References

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

See Also

seq, sequence, replicate.

Page 448: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

448 replace

Examples

rep(1:4, 2)rep(1:4, each = 2) # 同じではない.rep(1:4, c(2,2,2,2)) # 二番目と同じ.rep(1:4, c(2,1,2,1))rep(1:4, each = 2, len = 4) # 最初の 4 だけ.rep(1:4, each = 2, len = 10) # 8 つの整数と二つのリサイクルされた 1.rep(1:4, each = 2, times = 3) # 長さ 24,3 つの完全な複製

rep(1, 40*(1-.8)) # 殆どのプラットフォームで長さ 7rep(1, 40*(1-.8)+1e-7) # より良い

## リストを複製するfred <- list(happy = 1:10, name = "squash")rep(fred, 5)

# 日付・時刻オブジェクトx <- .leap.seconds[1:3]rep(x, 2)rep(as.POSIXlt(x), rep(2, 3))

## 名前付き因子x <- factor(LETTERS[1:4]); names(x) <- letters[1:4]xrep(x, 2)rep(x, each = 2)rep.int(x, 2) # 名前無しrep_len(x, 10)

replace Replace Values in a Vector

Description

replaceは list中で与えられた添字を持つ x中の値を values中で与えられたもので置き換える.もし必要なら values中の値はリサイクルされる.

Usage

replace(x, list, values)

Arguments

x ベクトル

list 添字ベクトル

values 置き換え値

Value

値が置き換えられたベクトル.

Page 449: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Reserved 449

Note

xは未変更である:結果を付値することを忘れない.

References

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

Reserved Reserved Words in R

Description

R構文解析に於ける予約語は

if else repeat while function for in next break

TRUE FALSE NULL Inf NaN NA NA_integer_ NA_real_ NA_complex_ NA_character_

... そして ..1, ..2等,これは呼び出し関数から引き渡された引数を参照するのに使われる.こうした構文要素の使い方はマニュアル ‘Introduction to R’,形式的メソッドにおけるそれらの用法は dotsMethodsを見よ.

Details

引用化の外部での予約語は常にそれらにリンクされたオブジェクトへの参照であるとして構文解析され,従って構文的な名前として使うことは許されない (make.namesを見よ).それらはバックチックによる引用化の内部では非構文的な名前として使うことが出来る.

rev Reverse Elements

Description

revはその引数の逆転バージョンを提供する.これはベクトルと dendrogramに対する既定メソッドを持つ総称的な関数である.

これはベクトルを減少順にソートするためにはもはや不要である(そして効率的ではない).なぜならそれは今ではむしろより直接的に sort(x, decreasing = TRUE)で得られるから.

Usage

rev(x)

Arguments

x 逆転が定義されているベクトルか別のオブジェクト.

Page 450: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

450 Rhome

References

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

See Also

seq, sort.

Examples

x <- c(1:5, 5:3)## 減少順にソートする;最初がより効率的:stopifnot(sort(x, decreasing = TRUE) == rev(sort(x)))stopifnot(rev(1:7) == 7:1) #- ここで 'rev' は不要

Rhome Return the R Home Directory

Description

Rのホームディレクトリ,もしくは Rをインストールした場所の該当箇所の完全なパスを返す.

Usage

R.home(component = "home")

Arguments

component Rのホームディレクトリを与える "home"と同様に,他の知られた値は"bin", "doc", "etc", "include", "modules"そして "share"で,Rをインストールした場所の該当箇所のパスを返す.

Details

Rのホームディレクトリは Rがインストールされたトップディレクトリである.

Rのホームディレクトリはしばしば R_HOME として参照され, Rセッション中のその名前の環境変数の値である.これは Rセッションの外部では RHOMEにより見つけることが出来る.

Value

Rのホームディレクトリや特定の成分へのパスを与える文字列.普通成分は Rホームディレクトリのサブディレクトリであるが, Unix風システムの場合必ずしもそうではない.

Windowsの "modules"の場合 "bin"はアーキテクチャ固有の位置である.

Unix 風システムでは,構成されたパスは環境変数 R_HOME の現在の値と R_SHARE_DIR,R_DOC_DIRそして R_INCLUDE_DIRがどこに設定されているかに基づいている(これらは起動時に設定され,変更すべきではない).

Windowsでは R.home()と R_HOMEの値は空白を含まないことが保証されており,もし要求されればパス要素の 8.3の短縮形に変更される. R_HOMEの値は前向きスラッシュを使

Page 451: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

rle 451

うように設定されている (多くのパッケージ保守者がそれを引用化無しにシェルに渡すため,例えば ‘Makefile’).

rle Run Length Encoding

Description

ベクトル中の等しい値の連の長さと値を計算する –又はその逆操作.

Usage

rle(x)inverse.rle(x, ...)

## S3 method for class 'rle'print(x, digits = getOption("digits"), prefix = "", ...)

Arguments

x rle()用のベクトル(原子的,リストではない); inverse.rle()に対してはクラス "rle"のオブジェクト.

... 追加の引数;ここでは無視される.

digits プリントに対する有効桁数, print.defaultを見よ.

prefix 文字列,プリントされる各行の先頭に付け加えられる.

Details

‘ベクトル’は is.vectorの意味で使われている.

欠損値はそれがまた欠損値であったとしてもその前の値とは等しくないと見做される.

inverse.rle()は rle()の逆関数であり, xを連から復元する.

Value

rle()は次の成分を持つクラス "rle"のオブジェクトを返す:

lengths 各連の長さを含む整数ベクトル.

values 対応する値を持つ lengthsと同じ長さのベクトル.

inverse.rle()は原子的なベクトルを返す.

Examples

x <- rev(rep(6:10, 1:5))rle(x)## 長さ [1:5] 5 4 3 2 1## 値 [1:5] 10 9 8 7 6

z <- c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE)rle(z)rle(as.character(z))

Page 452: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

452 Round

print(rle(z), prefix = "..| ")

N <- integer(0)stopifnot(x == inverse.rle(rle(x)),

identical(N, inverse.rle(rle(N))),z == inverse.rle(rle(z)))

Round Rounding of Numbers

Description

ceilingは一つの数値引数 xを取り,xの対応要素より小さくない最小の整数を含む数値ベクトルを返す.

fllorは一つの数値引数 xを取り,xの対応要素より大きくない最大の整数を含む数値ベクトルを返す.

truncは一つの数値引数 xを取り,xの対応要素を 0に向かって切り詰めることで得られる整数を含む数値ベクトルを返す.

roundはその最初の引数中の値を指定された数の 10進桁数(既定値 0)で丸める.

signifはその最初の引数中の値を指定された有効桁数に丸める.

Usage

ceiling(x)floor(x)trunc(x, ...)

round(x, digits = 0)signif(x, digits = 6)

Arguments

x 数値ベクトル.または roundと signifに対しては複素数値ベクトル.

digits 10進桁数を指示する整数(round),または使用する有効桁数(signif).負の数が許される(‘詳細’)を見よ.

... メソッドに引き渡される引数.

Details

これらは総称的関数である:それらに対するメソッドを個別に,または the Mathグループ総称的経由で定義できる.

5の丸めについては IEC 60559標準 ‘偶数に向かう’が使われることが期待されている.従って round(0.5)は 0で,round(-1.5)は -2である.しかしながら,これは OSサービスと表現エラーに依存している(例えば, 0.15は正確に表現できないため,丸め規則は表現された数に適用されプリントされる数に対してではない.従って round(0.15, 1)は0.1にも 0.2にもなりえる).

負の桁数への丸めは10の巾乗への丸めを意味する.従って例えば round(x, digits = -2)は一番近い100の倍数に丸められる.

Page 453: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

round.POSIXt 453

signifに対しては認識される digitsの値は 1...22であり,非欠損数はこの範囲の最も近い値に丸められる.複素数はより大きな成分中の指定桁数が保たれるように丸められる.ベクトルの各要素はプリント時とは異なり個々に丸められる.

これらは皆プリミティブな関数である.

S4メソッド

これらは皆(内部的に) S4総称的である.

ceiling, floorそして truncは Mathグループ総称的関数のメンバーである. S4総称的であるため truncはただひとつの引数を持つ.

roundと signifは Math2グループ総称的関数のメンバーである.

警告

計算機における算術の現実は予期せぬ結果を引き起こす可能性がある.特に floor とceilingに関してである.例えば, x = 8に対する floor(log(x, base = 8))は 1になるはずであるが,ある Rのプラットフォームでは 0になることが知られている.普通ある許容度を用いることが必要である.

References

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

See Also

as.integer.

Examples

round(.5 + -2:4) # IEEE 式丸め: -2 0 0 2 2 4 4( x1 <- seq(-2, 4, by = .5) )round(x1) #-- IEEE 式丸め!x1[trunc(x1) != floor(x1)]x1[round(x1) != floor(x1 + .5)](non.int <- ceiling(x1) != floor(x1))

x2 <- pi * 100^(-1:3)round(x2, 3)signif(x2, 3)

round.POSIXt Round / Truncate Data-Time Objects

Description

日付・時刻オブジェクトを丸めるまたは切り詰める.

Page 454: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

454 row

Usage

## S3 method for class 'POSIXt'round(x, units = c("secs", "mins", "hours", "days"))## S3 method for class 'POSIXt'trunc(x, units = c("secs", "mins", "hours", "days"), ...)

## S3 method for class 'Date'round(x, ...)## S3 method for class 'Date'trunc(x, ...)

Arguments

x "POSIXt"または "Date"を継承するオブジェクト.

units リストされた単位の一つ.簡略化出来る.

... 他の引数に・から渡される引数,特に roundに対する digits.

Details

時刻は秒,分,時間又は日に丸めたり切り詰められる.タイムゾーンは現在のタイムゾーンに於ける真夜中の際の日だけに関係する.

クラス "Date"に対するメソッドは小数秒を除く以外はほとんど役に立たない.

Value

クラス "POSIXlt"または "Date"のオブジェクト.

See Also

総称的関数と既定メソッドに対しては round.

DateTimeClasses, Date

Examples

round(.leap.seconds + 1000, "hour")trunc(Sys.time(), "day")

row Row Indexes

Description

行列風オブジェクト中のそれらの行番号を指示する整数の行列,又は行ラベルを指示する因子を返す.

Usage

row(x, as.factor = FALSE)

Page 455: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

row+colnames 455

Arguments

x 行列風オブジェクト,二次元の dimを持つもの.

as.factor 数ではなく行ラベル(必要なら作られる)の因子として値を返すべきかどうかを指示する論理値.

Value

xと同じ次元を持つ整数(又は因子)行列でその ij番目の要素は i (又は i番目の行ラベル)に等しい.

References

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

See Also

列を得るには col.

Examples

x <- matrix(1:12, 3, 4)# 行列の対角成分を取り出すdx <- x[row(x) == col(x)]dx

# 5 x 5 の単位行列を作るx <- matrix(0, nrow = 5, ncol = 5)x[row(x) == col(x)] <- 1x

row+colnames Row and Column Names

Description

行列風のオブジェクトの行名や列名を取り出したり設定したりする.

Usage

rownames(x, do.NULL = TRUE, prefix = "row")rownames(x) <- value

colnames(x, do.NULL = TRUE, prefix = "col")colnames(x) <- value

Page 456: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

456 row+colnames

Arguments

x 行列風 R オブジェクトで,colnames に対して少なくとも 2次元を持つ.

do.NULL 論理値.もし FALSEで名前が NULLなら名前が作られる.

prefix 作られる名前用.

value dimnames(x) の成分に対する適正な値.行列や配列に対してはこれはNULLか長さがゼロで無く適当な次元に等しい文字列ベクトル.

Details

取り出し関数はすべての行列風オブジェクト xに対し意味のある何かをしようと試みる.もしオブジェクトが dimnamesを持てば,最初の成分が行名として使われ,二番目の成分(もしあれば)が列名として使われる.データフレームに対しては rownamesと colnamesは結局それぞれ row.namesと namesを呼び出すが,後者が優先される.

もし do.NULLが FALSEならば,いかなるケースでも文字列ベクトル (長さが NROW(x)かNCOL(x))が返され,もし次元名や対応する次元名の成分が NULLならば単純な数に接頭辞prefixが付く.

配列や行列に対する置き換えメソッドは valueのベクトルと因子値を文字列に強制変換するるが,as.characterに対するメソッドを選択適用しない.

データフレームに対しては, rownamesに対する valueは重複がなく欠損しない(これは厳守される)文字列ベクトル, colnamesに対しては(望ましくは)ユニークで構文解析的に適正な文字列なければならない.双方のケースで value は as.character で強制変換され,colnamesの設定は行名を文字列に変換する.

Note

もし置き換え版が次元名のない行列に対して呼び出されると,それらは適当な次元名を加える.しかし

rownames(x)[3] <- "c"

のような構成は xが既に次元名を持つのでなければ動作しないかもしれない.なぜならこれは rownames(x)の NULL値から長さ3の valueを作りだすから.

See Also

dimnames, case.names, variable.names.

Examples

m0 <- matrix(NA, 4, 0)rownames(m0)

m2 <- cbind(1, 1:4)colnames(m2, do.NULL = FALSE)colnames(m2) <- c("x","Y")rownames(m2) <- rownames(m2, do.NULL = FALSE, prefix = "Obs.")m2

Page 457: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

row.names 457

row.names Get and Set Row Names for Data Frames

Description

全てのデータフレームは行名属性を持つ.これは行数の長さの文字列ベクトルで重複や欠損は無い.

便宜上これらは総称的な関数でユーザは他のメソッドを書くことが出来,配列に対する既定メソッドがある.ここでの説明はデータフレーム用のメソッドに対するものである.

Usage

row.names(x)row.names(x) <- value

Arguments

x クラス "data.frame"のオブジェクト,又はメソッドが定義されている任意の他のクラス.

value 整数ベクトルで無い限り文字列に強制変換されるオブジェクト.これは(強制変換後に) xの行数と同じ長さを持ち,重複したり欠損した値があってはならない. NULLは許される:‘詳細’を見よ.

Details

データフレームは(定義から)行名を持ち,これはデータフレームの行数の長さを持ち,欠損値や重複値を含んではならない.この要求を満たす行名がソフトウェアにより加えられれば,それらは ‘automatic’と見做される.

現在行名には整数か文字列が許されているが,過去との互換性のため(R <= 2.4.0),row.names は常に文字列ベクトルを返す. (もし整数値の行名のセットが欲しければattr(x, "row.names")を使う.)

値に対して NULLを使うと行名を seq_len(nrow(x))にリセットし,‘automatic’と見做される.

Value

row.namesは文字列ベクトルを返す.

row.names<-は行名が変更されたデータフレームを返す.

Note

row.namesは配列に対する rownamesに類似し,これは配列引数に対して rownamesを呼び出すメソッドを持つ.

n > 2に対して形式 1:nを持つ行名が内部的にコンパクトな形式で保管される.これらは Cコードや逆構文解析で見ることができるが,row.namesや attr(x, "row.names")では出来ない.加えてある種のこのタイプの名前は ‘automatic’とマークされ, as.matrixと data.matrix (そして可能性として他の関数)により異なった扱いを受ける. (全ての列数がゼロのデータフレームは automatic row.namesを持つと見做される.)

Page 458: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

458 rowsum

References

Chambers, J. M. (1992) Data for models. Chapter 3 of Statistical Models in S eds J. M. Chambersand T. J. Hastie, Wadsworth & Brooks/Cole.

See Also

data.frame, rownames, names.

内部表現については .row_names_info.

rowsum Give Column Sums of a Matrix or Data Frame, Based on a GroupingVariable

Description

数値行列風オブジェクトの行を跨る和をグルーピング変数の各水準に対して計算する.rowsumは総称的な関数であり,データファイルに対するメソッドとベクトル及び行列に対する既定メソッドを持つ.

Usage

rowsum(x, group, reorder = TRUE, ...)

## S3 method for class 'data.frame'rowsum(x, group, reorder = TRUE, na.rm = FALSE, ...)

## Default S3 method:rowsum(x, group, reorder = TRUE, na.rm = FALSE, ...)

Arguments

x 数値データの行列,データフレーム又はベクトル.欠損値が許される.数値ベクトルは列ベクトルとして扱われる.

group グルーピングを与えるベクトルもしくは因子で, xの行毎に一つのようそを持つ.欠損値は別のグループとして扱われ警告が与えられる.

reorder もし TRUEなら結果は sort(unique(group))の順序で,もし FALSEならグループが登場した順序になる.

na.rm 論理値(TRUE又は FALSE).NA (NaNを含む)値は捨て去るべきか?... 他のメソッドに・から渡される他の引数.

Details

既定では下の例のように行を tapplyにあわせて再順序化する.再順序化は,非常に多くの異なった groupがあり xが僅かな列を持たなければ,再順序化は気づかれるほどの時間は取らない.

オリジナルの関数は Terry Therneauによって書かれたが,これは大きな行列に対してかなり速いハッシュを用いた新しい実装である.

行列の全ての行について和を取る(つまり単一の group)には colSumsを使い,これは更に速い.

整数引数に対しては桁溢れと桁落ちの結果は NAになる.

Page 459: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

sample 459

Value

和を含む行列もしくはデータフレーム. groupのユニークな値ごとに一つの行がある.

See Also

tapply, aggregate, rowSums

Examples

require(stats)

x <- matrix(runif(100), ncol = 5)group <- sample(1:8, 20, TRUE)(xsum <- rowsum(x, group))## より遅いバージョンtapply(x, list(group[row(x)], col(x)), sum)t(sapply(split(as.data.frame(x), group), colSums))aggregate(x, list(group), sum)[-1]

sample Random Samples and Permutations

Description

sampleは xの要素から指定されたサイズのサンプルを置き換え,又は置き換え無しで取り出す.

Usage

sample(x, size, replace = FALSE, prob = NULL)

sample.int(n, size = n, replace = FALSE, prob = NULL)

Arguments

x それから選択する一つもしくはそれ以上の要素のベクトルか,正整数.‘詳細’を見よ.

n 正整数で,選択される項目の個数.‘詳細’を見よ.

size 選択される項目の数を与える非負整数.

replace サンプリングは置き換え有りで行うか?

prob サンプルされるベクトルの要素を得るための確率重みのベクトル.

Details

もし x が長さ 1 を持てば数値 (is.numeric の意味で),そして x >= 1 なら 1:x からのsampleによるサンプル.この決まりは sample(x)のような xが呼び出し中で可変な長さを持つときは好ましくない挙動にみちびかれるかもしれないことを注意しよう.

さもなければ xは lengthと整数による部分抽出が意味を持つ任意の Rオブジェクトで良い:これらの操作に対する S3又は S4メソッドは適切さに応じて選択適用される.

Page 460: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

460 sample

sampleに対しては sizeに対する来て地は最初の引数から推測される項目数になるので,sample(x)は x (又は 1:x)の無作為置換を生成する.

n = 0又は長さがゼロの xを用いた size = 0のサンプルを要求することは許されるが,さもなければ n > 0又は正の length(x)が要求される.

x又は xへの整数でない正数値は次の最少の整数に切り詰められる.これは .Machine$integer.maxよりも大きくあってはならない.

オプションの prob引数はサンプルされるベクトルの要素を得るための重みベクトルを与えるのに使うことが出来る.それらは総和が 1になる必要はないが,非負で全部がゼロであってはならない.もし replaceが真ならWalkerのエイリアス法(Ripley, 1987)が合理的にありそうな値が 200以上ある時に使われる:これは R < 2.2.0からのそれらとは互換性のない結果を与える.

もし replaceが偽なら,これらの確率は逐次的に提供される,つまり次の項目を選択する確率は残りの項目中での重みに比例する.ゼロでない重みの数はこのケースでは少なくとも size個必要になる.

sample.intは飾り気の無いインタフェイスであり, nと sizeの両方が整数として与えられなければならない.

R 3.0.0以来 nは整数型の最大整数よりも大きくてもよく,倍精度実数型で表現可能な最大整数まで許される.一様なサンプリングだけがサポートされている.二つの乱数が大きな整数の一様サンプリングを保証するために使われる.

Value

sampleに対しては長さ sizeのベクトルで,その要素は xか整数 1:xから取り出される.

sample.intに対しては長さが sizeの整数ベクトルで,その要素は 1:n又はもし n ≥ 231

ならば倍精度実数ベクトルから取り出される.

References

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

Ripley, B. D. (1987) Stochastic Simulation. Wiley.

See Also

乱数生成については RNG.

置き換え無しの重み付きサンプリングの他の方法については CRAN パッケージ sam-pling.

Examples

x <- 1:12# ランダムな置換sample(x)# ブートストラップリサンプリング -- length(x) > 1 の時だけ!sample(x, replace = TRUE)

# 100 組のベルヌイ試行sample(c(0,1), 100, replace = TRUE)

## より慎重なブートストラップ -- プログラム中で sample() を使う際に## これを考慮しよう(つまり自分の関数やシミュレーション中で)!

Page 461: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

save 461

# sample() のサプライズ -- 例x <- 1:10

sample(x[x > 8]) # 長さ 2sample(x[x > 9]) # なんと -- 長さ 10!sample(x[x > 10]) # 長さ 0

resample <- function(x, ...) x[sample.int(length(x), ...)]resample(x[x > 8]) # 長さ 2resample(x[x > 9]) # 長さ 1resample(x[x > 10]) # 長さ 0

## R 3.x.y のみsample.int(1e10, 12, replace = TRUE)sample.int(1e10, 12) # 複製出来る可能性はまず無い

save Save R Objects

Description

saveは Rオブジェクトの外部表現を指定されたファイルに書き出す.オブジェクトはloadや attach (又はある場合には data)で後から読み戻すことが出来る..

save.image()は‘作業空間を保存する’ショートカットである,つまりsave(list = ls(all.names = TRUE), file = ".RData", envir = .GlobalEnv).これはまた q("yes")とした時起きることである.

Usage

save(..., list = character(),file = stop("'file' must be specified"),ascii = FALSE, version = NULL, envir = parent.frame(),compress = isTRUE(!ascii), compression_level,eval.promises = TRUE, precheck = TRUE)

save.image(file = ".RData", version = NULL, ascii = FALSE,compress = !ascii, safe = TRUE)

Arguments

... 保存されるべきオブジェクトの名前(シンボル又は文字列).list 保存されるべきオブジェクトの名前を含む文字列ベクトル.

file (書き込み可能なバイナリモードの)コネクションまたはデータが保存されるファイルの名前(チルド展開が行われる). save.imageに対してはファイル名又は version = 1でなければならない.

ascii もし TRUEならば,データのアスキー表現が書き込まれる. asciiに対する既定値は FALSEでバイナリファイルへの書き込みになる.もし NAで version >= 2ならば,倍精度/複素数をバイナリの分数で書き込む異なったアスキー表現を用いる.

version 使用する作業空間の書式.NULLは現在の既定書式を指定する.R 0.99.0から R 1.3.1はバージョン 1である. R 1.4.0以来の既定書式はバージョン 2である.

Page 462: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

462 save

envir 保存すべきオブジェクトを探索する環境.

compress 名前付きのファイルの保存に圧縮を使うかどうか指定する論理近文字列.TRUEは gzip圧縮に対応し,文字列 "gzip", "bzip2"又は "xz"は圧縮のタイプを指定する.fileがコネクションとバージョン 1の作業空間書式では無視される.

compression_level

整数:使用する圧縮のレベル.既定値は gzipに対しては 6, bzip2又は xz圧縮には 9.

eval.promises 論理値:予約であるオブジェクトは保存する前に強制すべきか.

precheck 論理値:保存前にオブジェクトの存在をチェックすべきか (そして特にファイル/コネクションを開く前に)? バージョン 1保存には適用されない.

safe 論理値.もし TRUEならば保存作業空間の作成のために一時ファイルが使われる.一時ファイルは保存が成功すると fileに保管される.もし保存が失敗すると,これは既存の作業空間 fileを保管するが,保存中に余分のディスクスペースを使うコストがかかる.

Details

... 中のシンボル(又は文字列)または list中の文字列ベクトルで指定されたオブジェクトの名前は環境 envirからオブジェクトを検索するのに使われる.既定では予約は評価されるが,もし eval.promises = FALSEなら予約は(評価環境と共に)保存される. (オブジェクトに埋め込まれた予約は常に未評価で保存される.)

全ての Rのプラットフォームは C intと doubleの XDR (ビッグエンディアン)表現をバイナリで保存されたファイルで使う.そしてこれらは全ての Rプラットフォームを通して可搬性を持つ.

アスキー保存はデータをプラットフォーム間で移動するのに有用であったが,しかし今では主に歴史的興味しか無い.それらは圧縮が使われない場合にはバイナリ保存よりもよりコンパクトになり得るが,しかしほとんど常に読み書き共に遅い:バイナリ保存はアスキーのそれよりはるかに良く圧縮できる.更に10進アスキー保存は倍精度/複素数値を正確に復元出来ないかもしれず,どのような値が復元できるかは Rプラットフォームに依存するかもしれない.

ascii, compress, safeそして version引数の既定値は "save.defaults"オプション(saveと save.image双方で使われる)で修正できる,‘例’も見よ.もし "save.image.defaults"オプションが設定されると,それは関数 save.image に対して "save.defaults" に優先して使われる(これはそれが異なった既定値を持つことを許す). compression_levelは"save.defaults"オプションの一部になり得る.

既に開かれていないコネクションはモード "wb"で開かれる.開かれていてバイナリモードでないコネクションを与えることはエラーになる.

比較

大きなファイルは圧縮により相当サイズを減らせる.ある 46MBの Rオブジェクトは圧縮無しで 2秒で 35MBとして保存できる. gzip圧縮では 8秒で 22MB, bzip2圧縮では13秒で 19MB, xz圧縮では 40秒で 9.4MBになった.ロード時間はそれぞれ 1.3, 2.8, 5.5そして 5.7秒であった.これらの結果は示唆的であるが,相対的なパフォーマンスは実際のファイルに依存する:ここでは xzは異常に優れた圧縮を行った.

compress = FALSEで圧縮されたファイルを後で圧縮することが出来る (gzip, bzip2又はxzを使って):効果は圧縮付きで保存したものと同じである.同様に,保存されたファイルは異なった圧縮スキームの下で解凍したり再圧縮したり出来る (そして Rの内部からそれを行う方法については resaveRdaFilesを見よ).

Page 463: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

save 463

並列圧縮

fileはコネクションでも良いことは pipeコネクションを使って pigz (http://zlib.net/pigz/)または pbzip2 (http://compression.ca/pbzip2/)等の外部並列圧縮ユーテリティの利用を可能にする.例えば 8スレッドを使って次のようにする

con <- pipe("pigz -p8 > fname.gz", "wb")save(myObj, file = con); close(con)

con <- pipe("pbzip2 -p8 -9 > fname.bz2", "wb")save(myObj, file = con); close(con)

con <- pipe("xz -T8 -6 -e > fname.xz", "wb")save(myObj, file = con); close(con)

ここで最後は多重スレッドに対するサポートを持つ xz 5.1.1 又はそれ以降を必要とする(そして並列圧縮は大きなオブジェクトに対してだけ有効である:水準 6ではそれは 12Mbのシリアル化された塊を圧縮する).

警告

... 引数は保存されるオブジェクトの名前だけを与える:それらは envir引数で与えられる環境中で探索され,引数で与えられた実際のオブジェクトは見つかったものである必要はない.

保存された Rオブジェクトは ascii = TRUEで保存された場合すらバイナリファイルである.従ってそれらが行末マーカーの変換無しで 8ビット文字として転送されることを保証しなければならない.行は全てのプラットフォーム上で LFで区切られる.既定バージョンは R 1.4.0以来変更されていないが,これは保存されたファイルが後方互換的であることを必ずしも意味しない.保存されたイメージは,後に付け加えられたもの (例えばバイトベクトル,外部ポインターそして S4オブジェクト)が利用されていなければ, Rの初期のバージョンにロードすることが出来る.そうした‘後で付け加えられたもの’には R 3.0.0で導入されたロングベクトルがあり,64ビットプラットフォームでだけロードできる.

ASCII = NAで保存されたファイルのロードは C99準拠の C関数 sscanfが必要になる:これは Windowsでは問題であり,最初 R 3.1.2で応急処置がなされた:これらは全てのプラットフォーム上で初期の Rバージョンで読み込み可能であるべきである.

Note

失敗の最もありふれた理由は現在のディレクトリへの書き込み権限の欠如である.save.imageとセッションの最後の保存に対してはこれは次のようなメッセージで示される

Error in gzfile(file, "wb") : unable to open connectionIn addition: Warning message:In gzfile(file, "wb") :cannot open compressed file '.RDataTmp',probable reason 'Permission denied'

See Also

dput, dump, load, data.基礎にあるシリアル化書式への他のインタフェイスに付いては serializeと saveRDSを見よ.

Page 464: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

464 scale

Examples

x <- stats::runif(20)y <- list(a = 1, b = TRUE, c = "oops")save(x, y, file = "xy.RData")save.image()unlink("xy.RData")unlink(".RData")

# オプションを使って保存既定値を設定する:options(save.defaults = list(ascii = TRUE, safe = FALSE))save.image()unlink(".RData")

scale Scaling and Centering of Matrix-like Objects

Description

scaleは総称的関数で,その既定メソッドは数値行列の列をセンタリングとスケーリング(同時又はどちらか)をする.

Usage

scale(x, center = TRUE, scale = TRUE)

Arguments

x 数値行列(風のオブジェクト).

center 論理値か長さが xの列数に等しい数値ベクトル.

scale 論理値か長さが xの列数に等しい数値ベクトル.

Details

centerはどのようにセンタリングを行うかを決める.もし centerが xの列数に等しい長さの数値ベクトルならば xの各列はそれから centerを引き去った対応する値を持つ.もし centerが TRUEならばセンタリングはそれらの対応する列から列平均(NAは除く)を引き去ることでなされる.そしてもし centerが FALSEならばセンタリングは行われない.

scaleの値は(センタリングの後に)どのようにスケーリングするかを決める.もし scaleが xの列数に長さが等しい数値ベクトルならば xの各列は scaleの対応する値で割られる.もし scaleが TRUEで centerが TRUEならばスケーリングは (センタリングされた) xの列をそれらの標準偏差で割ることでなされ,さもなければ二乗平均の平方根で割られる.もし scaleが FALSEならばスケーリングは行われない.

(可能性としてセンタリングされた)列の二乗平均の平方根は√∑

(x2)/(n− 1)として定義される,ここで xは非欠損値のベクトルで nは非欠損値の数である. center = TRUEのケースではこれは標準偏差と等しいが,一般にはそうではない.(センタリング無しにスケーリングするには scale(x, center = FALSE, scale = apply(x, 2, sd, na.rm = TRUE))を使う.)

Page 465: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

scan 465

Value

scale.defaultに対してはセンタリングとスケーリングされた行列.使用された数値センタリングとスケーリングが属性 "scaled:center"と "scaled:scale"として返される.

References

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

See Also

任意の統計量によるセンタリング(とスケーリング)を許す sweep.

プロットのスケールを用いて作業するには parを見よ.

Examples

require(stats)x <- matrix(1:10, ncol = 2)(centered.x <- scale(x, scale = FALSE))cov(centered.scaled.x <- scale(x)) # すべて 1

scan Read Data Values

Description

コンソールかファイルからデータをベクトルやリストに読み込む.

Usage

scan(file = "", what = double(), nmax = -1, n = -1, sep = "",quote = if(identical(sep, "\n")) "" else "'\"", dec = ".",skip = 0, nlines = 0, na.strings = "NA",flush = FALSE, fill = FALSE, strip.white = FALSE,quiet = FALSE, blank.lines.skip = TRUE, multi.line = TRUE,comment.char = "", allowEscapes = FALSE,fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)

Arguments

file データ値をそこから読み取るファイルの名前.もし指定されたファイルが ""なら入力はキーボードから取られる (または,もし入力がリダイレクトされているか Rが埋め込みならば stdin()が読み取るもの).(この場合入力は空白行か EOFシグナルで終了できる.EOFシグナルはUnixでは ‘Ctrl-D’でWindowsでは ‘Ctrl-Z’.)さもなければ,それが絶対パスを指定していない限りファイル名は現在のディレクトリ (getwd()で与えられる)と相対的と解釈される.サポートされていればチルダ展開がされる. Rがスクリプトから実行されていれば,file = "stdin"がプロセスの stdinファイルストリームを参照するのに使うことが出来る.

これは圧縮ファイルでもよい(fileを見よ).

Page 466: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

466 scan

別法として fileは必要なら開かれるコネクションでもよく,そしてもしそうならば関数呼び出しの最後に閉じられる.コネクションが如何なるモードで開かれようと, LF, CRLFまたは CRのどれもが行の EOLマーカーとして受け入れられ,従って sep = "\n"にマッチする.

fileはまた完全な URLでも良い.(サポートされている URLスキームについては urlに対するヘルプの ‘URL’節を見よ.)現在のエンコーディングではないデータファイルを読み取る (例えばUTF-8ロケールでの Latin-1ファイル又はその逆)にはその encoding引数を設定した fileコネクションを使う(または scanの fileEncoding引数).

what what の型は読み取られるデータの型を与える. (ここで‘型’は typeofの意味で使われている. ) サポートされている型は logical, integer,numeric, complex, character, rawそして list.もし whatがリストならそれはデータファイルの行が各々が length(what)個の項目(‘欄’)の記録であることを仮定し,そしてリスト成分は上にあげた最初の6つの(原子的な)型か NULLを持たなければならない,下の‘詳細’節を見よ.

nmax 整数:読み込まれるデータ値の最大数か,もし whatがリストなら読み込まれる記録の最大数.もし無いか,正でないか,または整数として不正 (そして nlinesが正の値に設定されていない)ならば scanは fileの最後まで読み取る.

n 整数:読み取られるデータ値の最大数で,既定では制限なし.不正な値は無視される.

sep 既定では scanは入力欄を区切る ‘空白’を読み取ることが期待されている.あるいは sep欄を区切る文字を指定するのに使うことが出来る.引用化されていない限り,一つの欄は常に行末マーカーで区切られる.

もし指定されるとこれは空の文字列(既定値)か NULLか唯一つの単バイト文字を含む文字列であるべきである.

quote 一つの文字列又は NULLとしての引用符のセット.多バイトロケールでは引用符はアスキー(単バイト)で無ければならない.

dec 小数点文字.これは唯一つの単バイト文字を含む文字列でなければならない.(NULLと長さゼロの文字列ベクトルもまた受け入れられ,既定値とされる.)

skip データ値を読み取り始める前にスキップする入力ファイルの行数.

nlines もし正なら,読み取られる最大行数.

na.strings 文字列ベクトル.このベクトルの要素は欠損値 (NA)として解釈される.空白欄は同様に論理値,整数,数値そして複素数欄で欠損値と考えられる.

flush 論理値:もし TRUEならば scanは要求された欄の最後を読み取った後に行末にフラッシュされる.これは最後の欄の後にコメントを置くことを許すが,一行にその一つの記録以上を置くことを排除する.

fill 論理値:もし TRUEなら scanは暗黙のうちに whatが示唆するよりも少ない欄の任意の行に空の欄を付け加える.

strip.white what引数中の項目に対応する論理値のベクトル.これは sepが指定されている時だけ使われ,文字の欄から先頭と末尾の ‘空白’を剥ぎ取ることを許す (数値の欄からは常に剥ぎ取られる).注意:引用符の中の空白は剥ぎ取られない.

もし strip.white が長さ1なら,これは全ての欄に適用される;さもなければ,もし strip.white[i] が TRUE で i 番目の欄が文字列型なら(what[i]がそうだから)欄 iから引用化されていない先頭と末尾の空白が剥ぎ取られる.

Page 467: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

scan 467

quiet 論理値:もし FALSEなら(既定値),scan()はどれだけの項目が読み取られたかを告げる行をプリントする.

blank.lines.skip

論理値:もし TRUEなら skipと nlinesをカウントしている時を除き入力中の空白行は無視される.

multi.line 論理値.whatがリストの時だけ使われる.もし FALSEならば全ての記録は一つの行の上に現れなければならない (しかしながら一つ以上の記録が単一の行上に登場しても良い). fill = TRUEの使用は一つの記録が行末で終了することを意味することを注意する.

comment.char 文字列:長さ 1 の文字列ベクトルで一つの文字かから文字列を含む.コメントの解釈を一切停止するには ""を使う(既定).

allowEscapes 論理値.‘\n’のような C風のエスケープ列を処理するか(既定)かそのままで読み込むかを指示する.もし引用符の中に無ければこれらは区切りと解釈されるかもしれないことを注意する(しかしコメント文字とは見做されない).制御文字と見做されるエスケープ列は ‘\a, \b, \f, \n, \r, \t, \v’そして ‘\040’と ‘\0x2A’のような8進法と16進法表現である.他の任意のエスケープ列はそのものとして扱われ,バックスラッシュを含む.Unicodeのエスケープ列(‘\u’か ‘\U’で始まる: Quotesを見よ)は決して処理されない.

fileEncoding 文字列:もし空でなければファイルに対して使われる (コネクションでもキーボードでもない)エンコーディングを宣言するので文字列データは再エンコード出来る. fileに対するヘルプの‘エンコーディング’節とマニュアル ‘R Data Import/Export Manual’を見よ.

encoding 入力文字列に対して仮定されるエンコーディング.もし値が "latin1"か "UTF-8"ならば,それが文字列が Latin-1や UTF-8であることが知られているとマークするのに使われる:これは入力を再エンコードするのに使われない (fileEncodingを見よ). ‘詳細’も見よ.

text 文字列:もし fileが与えられずこれが与えられると,データはテキストコネクションを使い textの値から読み取られる.

skipNul 論理値:文字欄を読み取る時 nulをスキップするか?

Details

whatの値は型のリストで良い.この場合 scanは what中の要素の型で与えられる型を持つベクトルのリストを返す.これは列状のデータを読み取る手段を与える.もし型どれかが NULLならば対応する欄はスキップされる (しかし NULL成分が結果に現れる).

whatの型やリスト成分は6つの原子的型や NULLの一つが可能である(is.atomicを見よ).

‘空白’は一つ又はそれ以上の連続する文字,水平タブ,キャリッジ・リターン,ラインフィードのようなこの機能のために定義される.これはフォームフィードや垂直タブを含まないが, Latin-1やWindowsの 8ビットロケール(UTF-8ではない)の ’スペース’は改行無しのスペース ‘"\xa0"’を含む.

空の数値欄は常に欠損値と見做される.空の文字列欄は na.stringsが ""を含まない限り空の文字列ベクトルとしてスキャンされ,さもなければ欠損値として扱われる.

数値欄に許される入力はオプションの空白に続く NA か,オプションの符号に続く一つ又は複数の数字 10進法数か16進法定数 (NumericConstantsを見よ),又は NaN, Inf又はinfinity (大・小文字を区別しない)である.この範囲を外れる値は Inf, -Inf又は 0として記録される.

Page 468: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

468 scan

整数欄に許される入力はオプションの空白に続く NAか,オプションの符号に続く一つもしくは複数の数字 (‘0-9’)である:全ての範囲外の値は NA_integer_に変換される.

もし sepが既定値("")なら,引用化された文字列中の文字 ‘\’は引き続く文字をエスケープ化するので,引用符はそれらをエスケープ化することで文字列中に含めることが出来る.

もし sepが非既定ならば,欄は ‘.csv’ファイルのスタイルで引用化出来るかもしれない.‘.csv’ファイルでは引用符(''又は "")内部の分離記号は無視され,引用符を二重化することで文字列中に置くことが出来る.しかしながら,もし sep = "\n"ならば既定で全ての行をそのまま読み取りたいと考えていると仮定される.

引用化は文字列欄中とNULL欄だけで解釈される(それはスキップされる文字列欄かもしれない).

sepは分離記号で終了記号ではなく scan("foo", sep = "\n", blank.lines.skip = FALSE)でファイルを読み取ると,もし欄がラインフィードで終われば空の最終行を与え,さもなければ与えない.これは希望されたものではないかもしれない: readLinesも見よ.

もし comment.charが出現すると(引用化された文字欄の内部を除き),それは行の残りをコメントと見做し捨て去る.コメント文字から始まる行 (もしかすると既定の分離記号を持つ空白の後で)は空白行と見做される.

コンソールから読み取る際は 4095バイトの行長の制限がある (これは下限を課すかもしれない: ‘An Introduction to R’を見よ).

もし whatがリストならば 1000行毎にユーザによる中断がないかチェックされる.さもなければ 1000項目毎になる.

もし fileが文字列で fileEncodingが非既定,もしくはそれが非既定の encoding引数を持つまだ開かれていないコネクションならば,テキストは UTF-8に変換されそうしたものとしてマークされる (そして scanへの encoding引数は無視される). readLinesの例を見よ.

入力ストリーム中の埋め込み nulは現在読み取られている欄を停止し,scanへの呼び出し毎に一回の警告が出る. skipNul = TRUEと設定するとそれらは無視されるようになる.

Value

もし whatがリストならば,whatと同じ長さと同じ名前のリスト.

さもなければ型 whatのベクトル.

結果中の文字列は,もし encodingが "latin1"か "UTF-8"ならば宣言されたエンコーディングを持つ..

Note

multi.lineに対する既定値は Sと異なる.一行当たり一つの記録を読むには flush = TRUEと multi.line = FALSEを使う. (引用化された文字列は依然埋め込みの新行を含むことが出来る.)

もし項目数が指定されないと,内部機構が2の巾乗単位でメモリを再配置し,必要なメモリ量の3倍まで使うことができる. (新旧のコピーのために必要になる.)もし可能なら大きなベクトルを入力する際は nか nmaxを,大きなリストを入力する時は nmaxか nlinesを指定する.

部分的な行を読み取るために開かれたコネクション上で scanを使うと文字を失う可能性がある:これを避けるために明示的な分離記号を使う.

Page 469: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

search 469

欄中に nulバイト(‘\0’を含む)ことは,もし allowEscapes = TRUE)ならば欄が nulで終わっているという解釈に導くかもしれない.これらは普通テキストファイル中には存在しない – readBinを見よ.

References

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

See Also

データ行列のより使いやすい読み込みには read.table;ファイルを一回に一行を読み込む readLines. write.

C風のエスケープ列の詳細は Quotes.

固定長もしくは可変長の文字列又は数値のバイナリ表現をコネクションから一回に少し読み込むには readCharと readBin.

Examples

cat("TITLE extra line", "2 3 5 7", "11 13 17", file = "ex.data", sep = "\n")pp <- scan("ex.data", skip = 1, quiet = TRUE)scan("ex.data", skip = 1)scan("ex.data", skip = 1, nlines = 1) # スキップした後は 1 行だけscan("ex.data", what = list("","","")) # flush は F -> "7" を読むscan("ex.data", what = list("","",""), flush = TRUE)unlink("ex.data") # 後片付け

## "inline" 使用scan(text = "1 2 3")

search Give Search Path for R Objects

Description

付加されたパッケージ(libraryを見よ)と,普通データフレームである Rオブジェクトのリストを与える.

Usage

search()searchpaths()

Value

文字列ベクトルで,".GlobalEnv"で始まり,常に必要となる Rの baseパッケージである "package:base"で終わる.

searchpathsは同じような文字列ベクトルを与え,パッケージに対する項目はコードをロードするのに使われるパッケージへのパスである.

Page 470: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

470 seek

References

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

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer. (searchPaths.)

See Also

検索パス上のパッケージだけをリストするには .packages.

ロードされた名前空間をリストするには loadedNamespaces.

検索パスを変更するには attach と detach,そこで R オブジェクトを見つけるにはobjects.

Examples

search()searchpaths()

seek Functions to Reposition Connections

Description

Functions to re-position connections.

Usage

seek(con, ...)## S3 method for class 'connection'seek(con, where = NA, origin = "start", rw = "", ...)

isSeekable(con)

truncate(con, ...)

Arguments

con コネクション.

where 数値.ファイル位置(origin に関して相対的に指定される),またはNA.

rw 文字列.空または "read"また "write",部分マッチが許される.

origin 文字列."start", "current", "end"の一つ:‘詳細’を見よ.

... 他のメソッドに・から引き渡す追加引数.

Page 471: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

seek 471

Details

where = NAを使った seekは(最初からの)コネクションの現在のバイトオフセットを返す.そして where引数が欠けていなければコネクションは(もし可能ならば)指定位置に再位置決めされる. isSeekableはコネクションが原理的に seekをサポートするかどうかを返す:現在ファイルコネクション(可能性として gz圧縮された)だけがサポートされている.

whereは実数として保管されるが整数を表現する:整数でない値は恐らく切り詰められる.可能な値は 64ビットそしてある 32ビット構築では,位置は Rの整数で表現できる最大整数を超えることが出来ることを注意する.

ファイルコネクションは書き込みと追加双方で開くことが出来る.その場合 Rは読み取りと書き込み用に別々の位置を維持する. seekが何を参照するかはその rwによって設定できる:既定値は使われた最後の(読み取りと書き込み)モードである.殆どのファイルは読み取り又は書き込み専用に開かれるために既定値はその状態にされる.もしファイルが読み書き双方で開かれたが使われていなければ,既定値は読み取り位置 (0)を与える.

読み取りの初期位置は常に初めにある.書き込みに対する初期位置はモード "r+" と"r+b"ではファイルの始めであり,さもなければ追加モードではファイルの最後になる.ある種のプラットフォームは追加モードではファイルの最後だけで書き込みを許す.(追加モードで開かれたファイルに対する報告される書き込み位置は典型的にはファイルが書き込まれるまでは信頼できない.)

gzfile コネクションは,非圧縮ファイルのファイル位置を使って,幾つかの制限下でseekをサポートする.それらは origin = "end"をサポートしない.書き込みの際は,シークは前方にだけ許される:読み込みの後方へのシークはファイルを巻き戻しそしてその最初から再読み込みすることでサポートされる.

もし seekが NAで無い whereの値で呼び出されると,任意のテキストモードでのプッシュバックは捨て去られる.

truncateは書き込みに対して開かれたファイルをその現在の位置で切り詰める.これはfileコネクションに対してだけ動作し,全てのプラットフォーム上でサポートされていない:他のプラットフォーム(Windowsを含む)ではこれは大きな(> 2Gb)ファイルに対しては動作しない.

これらのどれもが,再エンコーディングが選ばれたテキストコネクション上では動作するとは期待されていない.

Value

seekは現在の位置を返す(任意の移動の前に),もし関連があれば(数値)原点からのバイトのオフセット,さもなければ 0. 64ビットそしてある 32ビット構築では,位置は Rの整数で表現できる最大整数を超えることが出来る.

truncateは NULLを返す:これはもしそれが失敗すれば (又は実装されていなければ)エラーと共に停止する.

isSeekableはコネクションが seekをサポートするかどうかを示す論理値を返す.

警告

Windows上で seekを使うことは勧められない.Windowsのファイルの位置決めには相当多くのエラーが見つかっており,ユーザは自分自身のリスクでそれを使うことがアドバイスされる.そしてWindowsの不完全さに関するバグ報告で R開発者の時間を浪費しないようにして欲しい.

Page 472: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

472 seq

See Also

connections

seq Sequence Generation

Description

規則正しい列を作る.seqは既定のメソッドを持つ標準的な総称的関数である. seq.intはプリミティブ関数で相当速いが少しの制約を持つ. seq_alongと seq_lenは二つの普通のケースに対する非常に速いプリミティブ関数である.

Usage

seq(...)

## Default S3 method:seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),

length.out = NULL, along.with = NULL, ...)

seq.int(from, to, by, length.out, along.with, ...)

seq_along(along.with)seq_len(length.out)

Arguments

... メソッドに・から渡される引数.

from, to 列の開始と(最大)終了値. fromが名前無しの引数として提供されない限り長さ 1.

by 数値:列の増分.

length.out 列の希望の長さ.非負値で,seqと seq.intに対しては整数でなければ丸められる.

along.with この引数の長さから長さを取る.

Details

数値の入力は全て有限でなければならない(つまり無限,NaN,そして NAでない).

seqと seq.intの名前のない引数の解釈は標準ではなく,プログラムでは常に引数に名前を付けることが勧められる.

seqは総称的であり,既定のメソッドだけがここで説明される.これは引数の名前にかかわらずその最初の引数に関して選択適用される.これは along.withのつもりで唯一つの引数で呼び出されると意図しない結果を持ち得る:その場合は seg_alongを使うほうが好ましい.

seq.int は内部総称的で,(引数のマッチング前に)最初に与えられた引数に基づいて"seq"に対するメソッドを選択適用する.

典型的な使用法は

Page 473: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

seq 473

seq(from, to)seq(from, to, by= )seq(from, to, length.out= )seq(along.with= )seq(from)seq(length.out= )

最初の形式は列 from, from+/-1, ..., toを生成する (from:toと同じ).

二番目の形式は列の値が toより小さいか等しくなるまで from, from+by, . . . , を生成する. to - fromと byが異なった符号ならエラーになる.計算された最後の値は丸め誤差を許して toを超えることができるが, toに丸められる.(‘少し超える’とは 10−10 倍のabs(from - to)の範囲の誤差である.)

三番目の形式は length.out 個の from から to までの等間隔の値の列を生成する.(length.outは普通 lengthや lenと省略され, seq_lenは相当速い.)

四番目の形式は整数列 1, 2, ..., length(along.with)を生成する.(along.withは普通alongと省略され, seq_alongは相当速い.)

五番目の形式は列 1, 2, ..., length(from)を生成する(あたかも引数 along.withが指定されているかのように).例外は引数が長さ 1の数値の時で,その時は(Sとの互換性から seq(0)に対しても) 1:fromと解釈される. seq_alongか seq_lenのどちらかの使用がよほど好ましい (Sとの厳密な互換性が本質的でない限り).

最後の形式は整数列 1, 2, ..., length.outを生成する.例外は length.out = 0の時で,その時は integer(0)を生成する.

非常に小さな列(from - toがオーダー 10−14 倍の二つの端点の大きい方の値)は fromを返す.

seqに対して(だけ)は,length.out又は along.withが指定されている限り from, toそして by の内最大二つまでを複素数で与えられる.より一般的に,seq の既定メソッドはMath, Opsそして Summaryグループ総称的関数に対するメソッドを持つクラス付きオブジェクトを処理する.

seq.int, seq_alongそして seq_lenはプリミティブである.

Value

seq.intと数値引数に対する seqの既定メソッドは型 "integer"か "double"のベクトルを返す:プログラマーはそれを信用すべきではない.

seq_along と seq_len は整数ベクトルを返す.例外はそれがロングベクトルの場合で,その時は倍精度実数になる.

References

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

See Also

メソッド seq.Dateと seq.POSIXt.

:, rep, sequence, row, col.

Page 474: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

474 seq.Date

Examples

seq(0, 1, length.out = 11)seq(stats::rnorm(20)) # 実効的に 'along'seq(1, 9, by = 2) # 'end' にマッチseq(1, 9, by = pi) # 'end' 以下にとどまるseq(1, 6, by = 3)seq(1.575, 5.125, by = 0.05)seq(17) # 1:17 と同じ,又は seq_len(17) がより良い

seq.Date Generate Regular Sequences of Dates

Description

暦日を表現するクラス "Date"のオブジェクトに対する seqメソッド.

Usage

## S3 method for class 'Date'seq(from, to, by, length.out = NULL, along.with = NULL, ...)

Arguments

from 開始日.必須.

to 終了日.オプション.

by 系列の増分.オプション.‘詳細’を見よ.

length.out 整数,オプション.系列の希望の長さ.

along.with この引数の長さから長さを取る.

... 他のメソッドに・から渡される他引数.

Details

byは幾つかの方法で指定できる.

• 数値,単位は日とされる.

• クラス difftimeのオブジェクト.

• 文字列で "day", "week", "month", "quarter"又は "year"のどれか一つ.これはオプションで(正もしくは負の)整数と空白が前にあっても良い.又は "s"が続く.

"month"の詳細は seq.POSIXtを見よ.

Value

クラス "Date"のオブジェクト.

Note

R 3.1.0以前では四半期の増分は by = "3 months"で指定された.

See Also

Date

Page 475: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

seq.POSIXt 475

Examples

## 一年の最初の日seq(as.Date("1910/1/1"), as.Date("1999/1/1"), "years")## 月ごとにseq(as.Date("2000/1/1"), by = "month", length.out = 12)## 四半期seq(as.Date("2000/1/1"), as.Date("2003/1/1"), by = "quarter")

## 二つの日付の間の全ての付きの第7日を見つける,最後は第7日.st <- as.Date("1998-12-17")en <- as.Date("2000-1-7")ll <- seq(en, st, by = "-1 month")rev(ll[ll > st & ll < en])

seq.POSIXt Generate Regular Sequences of Times

Description

日付・時刻オブジェクトに対する seqメソッド.

Usage

## S3 method for class 'POSIXt'seq(from, to, by, length.out = NULL, along.with = NULL, ...)

Arguments

from 開始日,必須..

to 終了日.オプション.

by 系列の増分.オプション.‘詳細’を見よ.

length.out 整数,オプション.系列の希望の長さ.

along.with 長さをこの引数の長さから取る.

... 他のメソッドへ・から渡される引数.

Details

byは幾つかの方法で指定できる.

• 数値,単位は秒とされる.

• クラス difftimeのオブジェクト.

• 文字列で "sec", "min", "hour", "day", "DSTday", "week", "month", "quarter" 又は"year"のどれか一つ.これはオプションで(正もしくは負の)整数と空白が前にあっても良い.又は "s"が続く.

"day" と "DSTday" の違いは,前者が夏時間への・からの変更を無視するのに対し後者は毎日同じ時計時間を使うことにある. ("week" は DST を無視する(周期144時間)が,"7 DSTdays"は代わりに使うことが出来る)."month"と "year"は DSTに対して許される.

Page 476: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

476 sequence

結果のタイムゾーンは fromから取られる: GMTは UTCを意味するので(そして英国のGreenwichのタイムゾーンではない)夏時間を持たない.

"month" の使用は日を変更せずに先ず月を進める:もし結果が月の不正な日になれば,次の月に進められる:例を見よ.

Value

クラス "POSIXct"のベクトル.

Note

R 3.1.0以前では四半期の増分は by = "3 months"で指定された.

See Also

DateTimeClasses

Examples

## 一年の最初の日seq(ISOdate(1910,1,1), ISOdate(1999,1,1), "years")## 月ごとにseq(ISOdate(2000,1,1), by = "month", length.out = 12)seq(ISOdate(2000,1,31), by = "month", length.out = 4)## 四半期seq(ISOdate(1990,1,1), ISOdate(2000,1,1), by = "quarter") # または "3 months"## days 対 DSTdays: タイムゾーンを無くすには c() を使う.seq(c(ISOdate(2000,3,20)), by = "day", length.out = 10)seq(c(ISOdate(2000,3,20)), by = "DSTday", length.out = 10)seq(c(ISOdate(2000,3,20)), by = "7 DSTdays", length.out = 4)

sequence Create A Vector of Sequences

Description

nvecの各要素について列 seq_len(nvec[i])が作られる.これらは連結され結果を返す.

Usage

sequence(nvec)

Arguments

nvec 非負整数のベクトルで,各要素は列の端点を指定する.

Details

sequenceの以前のバージョンは 0や負の入力に対して seq(x) == 1:xとして動作した.

sequence <- function(nvec) unlist(lapply(nvec, seq_len)) であることを注意する.これは主に Rのかなり初期のバージョンに敬意を払うために存在する.

Page 477: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

serialize 477

See Also

gl, seq, rep.

Examples

sequence(c(3, 2)) # 1:3 と 1:2 を連結したもの.#> [1] 1 2 3 1 2

serialize Simple Serialization Interface

Description

コネクションへのシリアル化の単純な低レベルインタフェイス.

Usage

serialize(object, connection, ascii, xdr = TRUE,version = NULL, refhook = NULL)

unserialize(connection, refhook = NULL)

Arguments

object シリアル化する Rオブジェクト.

connection 開かれたコネクション,又は(serializeに対して) NULLや (unserializeに対しては)バイト型ベクトル (‘詳細’を見よ).

ascii 論理値.もし TRUEや NAならアスキー表現が書き込まれる;さもなければ(既定)バイナリで書き込まれる. saveに対するヘルプ中のコメントも見よ.

xdr 論理値:もしバイナリ表現が使われると,ビッグエンディアンなもの(XDR)を使うか?

version 使用する作業空間の書式.NULLは現在の既定書式 (2)を指定する.2の前のバージョンはサポートされないので,これは最近のバージョンでは唯一関係する.

refhook 参照オブジェクトの処理のためのフック関数.

Details

関数 serializeは objectを指定されたコネクションにシリアル化する.もし connectionが NULLならば, objectはバイト型ベクトルにシリアル化され,これは serializeの結果として返される.

参照オブジェクトの共有はオブジェクトの内部に保存されているが serializeへの別個の呼び出しを跨ってはされない.

unserialize は(serialize で書き込まれた)オブジェクトを connection やバイト型ベクトルから読み込む.

refhook関数は非システム参照オブジェクト (全ての外部カウンターと弱参照,そして名前空間とパッケージ環境と .GlobalEnv以外の全ての環境)の処理をカスタム化するために使うことが出来る. serializeに対するフック関数はそれが処理したい参照に対する文

Page 478: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

478 serialize

字列を返すべきである;さもなければそれは NULLを返すべきである. unserializeに対するフックは serializeに提供された文字列と共に呼び出され,そして適当なオブジェクトを返すべきである.

テキストモードのコネクションに対しては,asciiの既定値は TRUEに設定される:アスキー表現だけがテキストモードのコネクションに書き込み可能で,ascii = FALSEを使用しようとするとエラーになる.

書式は一つの行とそれに続くデータからなる:最初の行はただ一つの文字からなる:バイナリシリアル化には X,アスキーシリアル化には Aで,新しい行が続く.(使用される書式は readRDSが使用するものと同じである.)

xdr = FALSEのオプションは R 2.15.0で導入された.現在使われるほとんどすべてのシステムはリトルエンディアンであるため,これは一つのリトルエンディアンの計算機から別の計算機にデータを転送する際に両端でバイトシャッフルを避けるために使うことが出来る.システム依存であるが,これはシリアル化とアンシリアル化を最大3倍スピードアップ出来る.

Value

serializeに対しては NULL.例外は connection = NULLの時で,その時は結果はバイトベクトルとして返される.

unserializeに対しては Rオブジェクト.

警告

これらの関数は R 2.4.0以来安定したインタフェイスを提供してきた (R 2.4.0でシリアル化したオブジェクトの保存は文字からバイト型ベクトルに変換された).しかしながら,シリアル化の書式は Rの将来のバージョンで変更される可能性があり,このインタフェイスは Rオブジェクトの長期保存に対しては使うべきではない.

32ビットプラットフォームではバイト型ベクトルは 231 − 1バイトに制限されているが,Rオブジェクトはこれを超えることが可能で,それらのシリアル化は普通オブジェクトよりも大きくなる.

See Also

ファイルやコネクション用にオブジェクトをシリアル化するより便利なインタフェイスに付いては saveRDS.

一つ又は複数の名前付きオブジェクトをシリアル化したり再生するには saveと load.

使われる書式の詳細についてはマニュアル ‘R Internals’.

Examples

x <- serialize(list(1,2,3), NULL)unserialize(x)

## saveRDS に対する例も見よ

Page 479: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

sets 479

sets Set Operations

Description

二つのベクトルに関する集合の合併,共通部分,(非対称!)差,同等性,そして所属関係の検査を実行する.

Usage

union(x, y)intersect(x, y)setdiff(x, y)setequal(x, y)

is.element(el, set)

Arguments

x, y, el, set (同じモードの)ベクトルで重複値を持たない(概念上)項目の列を含む.

Details

union, intersect, setdiffそして setequalの各々は引数中の重複値を捨て去り,それらの引数に as.vectorを適用する(従って特に因子は文字列ベクトルに変換される).

is.element(x, y)は x %in% yと等しい.

Value

setdiffと intersectに対してそれぞれ xや yと同じモードのベクトル.そして unionに対しては共通nモード.

setequalに対しては論理値スカラーで, is.elementに対しては xと同じ長さの論理値.

See Also

%in%

プロットの注釈で unionと intersectを使うには ‘plotmath’.

Examples

(x <- c(sort(sample(1:20, 9)), NA))(y <- c(sort(sample(3:23, 7)), NA))union(x, y)intersect(x, y)setdiff(x, y)setdiff(y, x)setequal(x, y)

## 全ての可能な x & y に対して真:setequal( union(x, y),

c(setdiff(x, y), intersect(x, y), setdiff(y, x)))

Page 480: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

480 shell

is.element(x, y) # 長さ 10is.element(y, x) # 長さ 8

setTimeLimit Set CPU and/or Elapsed Time Limits

Description

トップレベルの計算や現在のセッションに対する CPUや/または経過時間の限界を設定する関数.

Usage

setTimeLimit(cpu = Inf, elapsed = Inf, transient = FALSE)

setSessionTimeLimit(cpu = Inf, elapsed = Inf)

Arguments

cpu 倍精度実数値.全 CPU時間の限界.

elapsed 倍精度実数値.全経過時間の限界.

transient 論理値.もし TRUEなら,限界は現在の計算の残りにだけ適用される.

Details

setTimeLimitは各トップレベルの計算,つまりコーソールかファイルから入力されたコマンドライン(継続行を含む)に適用される限界を設定する.もしこれが計算の内部から呼び出されると限界は計算の残りと(transient = TRUEで無い限り)その後のトップレベルの計算に適用される.

setSessionTimeLimitはセッションの残りに対する限界を設定する.セッションが限界に達するとそれは Infにリセットされる.

限界の設定は小さなオーバーヘッドを持つ –計測されているシステム上で 1%未満.

時間限界はユーザの中断が起きるたびにチェックされる.これはRコード中と Sys.sleepの途中で頻繁に起きるが,コード作者により特定された Cと Fortranコード中の場所に於いてだけである.

‘トータル CPU時間’は後者が報告される子プロセスによって使用されるものを含む.

shell Invoke a System Command, using a Shell

Description

shellは cmdで指定される命令を普通シェルの下で実行する.これは POSIX標準が要求するものである.

Usage

shell(cmd, shell, flag = "/c", intern = FALSE, wait = TRUE,translate = FALSE, mustWork = FALSE, ...)

Page 481: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

shell 481

Arguments

cmd 起動されるべき命令,文字列として与えられる.

shell 使用されるシェルの名前を与える文字列,又は NULL (シェル無し).もし欠損していれば適当なシェルが選ばれる: ‘詳細’を見よ.

flag シェルのもとで命令を実行するスィッチ.もしシェルが bash か tcshか shならば,既定値は "-c"に替えられる.

intern 論理値,命令の出力を Rオブジェクトにするかどうかを指示する.

wait Rインタープリタは命令が終わるのを待つか?既定では待つ.そしてインタープリタは intern = TRUEならば常に待つ.

translate もし TRUEならば cmd中の ‘"/"’は ‘"\"’に翻訳される.

mustWork 論理値;もし TRUEならば命令の実行が失敗すると Rのエラーになる.もし FALSEならば警告,NAならば Rのメッセージは無い.

... systemへの追加引数.

Details

もしどのシェルも指定されないと環境変数 R_SHELLと COMSPECが順に試される:COMSPECは常に成功すべきである.shell = NULLを使うと命令 cmdが直接起動されるが,拡張子‘.exe’が仮定される.もし拡張子が与えられれば直接バッチファイルを使うことが可能である:そうするとWindows (Rではなく)がシェルを選択する.

より完全な詳細は systemを見よ: shellは systemに対するよりわかりやすいラッパである.Windowsのファイルアソシエーションを使うには shell.execを利用する.

Value

もし intern = TRUEならば命令の出力を与える文字列ベクトルで文字列ごとに一行になる.又は命令が実行できなければエラーメッセージ.

もし intern = FALSEならば返り値はエラーコードで不可視属性が与えられている(従って明示的にプリントする必要がある).もし何らかの理由で命令が実行できなければ値は-1で Rの警告が出る.さもなければ,もし wait = FALSEならば値は命令が返すエラーコードであり,そしてもし wait = TRUEならばそれはゼロになる (便宜的な成功値).

もし intern = FALSE で wait = TRUE (既定値)ならばコンソールアプリケーションである命令がテキスト出力が Rのコンソールか Rを実行しているウィンドウ(Rterm)に現れる.

Note

この関数は Windowsでだけ存在する:全ての他のプラットフォームでは systemはシェルを利用する.

See Also

system, shell.exec

Page 482: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

482 shell.exec

shell.exec Open a File or URL using Windows File Associations

Description

指定されたファイルか URLを Windowsのファイルアソシエーション中で指定されたアプリケーションを使って開く.

Usage

shell.exec(file)

Arguments

file 開かれるべきファイル又は URL.

Details

file中のパスは現在の作業ディレクトリに関して相対的と解釈される.

Rのバージョン 2.13.0とそれ以前では fileは Rのホームディレクトリに関して相対的と解釈されていたので,完全なパスが普通必要であった.

エンコードされた ‘file://’ URL は例えば "file:///c:/path/to/file.txt" のようにWindowsの標準形式でなければならない,

Value

値はないが,もし操作が失敗すると情報を与えるエラーメッセージが与えられる.

Author(s)

B. D. Ripley and Duncan Murdoch

See Also

system, shell

Examples

## Not run:## スペースはここではエンコードされるべきではないshell.exec("C:\\Program Files\\BreezeSys\\BreezeBrowser\\Breezebrowser.htm")shell.exec("C:/Program Files/BreezeSys/BreezeBrowser/Breezebrowser.htm")shell.exec("file:///C:/Program Files/BreezeSys/BreezeBrowser/Breezebrowser.htm")

## End(Not run)

Page 483: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

showConnections 483

showConnections Display Connections

Description

コネクションの様相の表示.

Usage

showConnections(all = FALSE)getConnection(what)closeAllConnections()

stdin()stdout()stderr()

isatty(con)

Arguments

all 論理値:もし真なら閉じられたものや標準のものを含む全てのコネクションが返される.もし偽なら開かれたユーザが作ったコネクションだけが含まれる.

what 整数:showConnectionsが与えるテーブルの行番号.

con コネクション.

Details

stdin(), stdout()そして stderr()はコンソール上の入力,出力そしてエラーに対応する標準コネクション(そして必ずしもファイルストリームに対するものでなく)である.これらはクラス "terminal"のテキストモードコネクションで,開いたり閉じたりすることは出来ず,それぞれ読み込みオンリー,書き込みオンリー,そして書き込みオンリーである. stdout()と stderr()コネクションは sinkによってリダイレクトすることが出来る (そしてある種の状況ではstdout()からの出力は分割できる:ヘルプページを見よ).

stdin()に対するエンコーディングはコマンドラインのフラグ ‘--encoding’で設定できる.

showConnectionsは情報の行列を返す.もしコネクションオブジェクトが失われたか忘れられたら,getConnectionはテーブルの行番号から取られそのコネクションに対するコネクションオブジェクトを返す.これは例えばコネクションを閉じるのに使うことが出来る.しかしながら,もしコネクションを参照する Rレベルのオブジェクトが無ければそれは次のガベージコレクションの際に自動的に閉じられる (gzconコネクションを除く).

closeAllConnectionsは全てのユーザのコネクションを閉じ(そして破壊し),全ての sinkダイバージョンをそれがそうあるべきように回復する.

isattyはもしコネクションがクラス "terminal"のコネクションの一つでそれが見かけ上端末に接続されていれば真を返し,さもなければ偽を返す.これは GUIコンソールを含む埋め込みのアプリケーションでは信頼できないかもしれない.

Page 484: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

484 shQuote

Value

stdin(), stdout()そして stderr()はコネクションオブジェクトを返す.

showConnectionsは各コネクションに対する行を持つ情報の文字列の行列を返す.既定では開かれている非標準のものだけ.

getConnectionはコネクションオブジェクト,又は NULLを返す.

Note

stdin()は‘コンソール’を参照し,プロセスの Cレベルの ‘stdin’ではない.この違いはGUIコンソールでは重要であり (これはアクティブな ‘stdin’を持たないかもしれず,そしてもしアクティブならコンソール入力に接続されていないかもしれない),そしまた埋め込みアプリケーションでもそうである.もし Cレベルのファイルストリーム ‘stdin’にアクセスしたければ file("stdin")を使う.

Rがファイルからスクリプトを読み取っている時は fileは ‘コンソール’である:これはインラインデータを許すための伝統的な用法である(例えば ‘An Introduction to R’を見よ).

See Also

connections

Examples

showConnections(all = TRUE)## Not run:textConnection(letters)# おやおや,それを記録するのを忘れてしまったshowConnections()# class description mode text isopen can read can write#3 "letters" "textConnection" "r" "text" "opened" "yes" "no"mycon <- getConnection(3)

## End(Not run)

c(isatty(stdin()), isatty(stdout()), isatty(stderr()))

shQuote Quote Strings for Use in OS Shells

Description

OSのシェルに渡すために文字列を引用化する.

Usage

shQuote(string, type = c("sh", "csh", "cmd"))

Arguments

string 文字列ベクトルで普通長さ 1.

type 文字列:シェルのタイプ.部分マッチングがサポートされている."cmd"はWindows NTシェルを参照しWindows下では既定である.

Page 485: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

sign 485

Details

Unix風システムでサポートされている既定の引用化のタイプは Bourneシェル shである.もし文字列が一重引用符を含まなければ,それを単に一重引用符で囲めば良い.さもなければ文字列は二重引用符で囲まれ,これはドル記号,バックコートそしてバックスラッシュを除く全てのメタ文字の特殊な意味を抑制するので,これら(そして勿論二重引用符も)はバックスラッシュを前に付ける.このタイプの引用化はまた bash, kshそしてzshに対しても適切である.

他のタイプの引用化は Cシェル (cshと tcsh)用である.再び,もし文字列が一重引用符を含まなければそれを一重引用符で囲むことが出来る.もしそれが一重引用符を含めば,それがドル記号やバックコートを含まないという前提で(そしてバックスラッシュ,感嘆符そして二重引用符はエスケープかしなければならない)二重引用符を使うことが出来る.最後の手段として,文字列を一重引用符を含まない欠片に分割し,各々を一重引用符で囲み,そして一重引用符を二重引用符で囲む.

References

Loukides, M. et al (2002) Unix Power Tools Third Edition. O’Reilly. Section 27.12.

See Also

Rコードの引用化には Quotes.

英文の引用化には sQuote.

Examples

test <- "abc$def`gh`i\\j"cat(shQuote(test), "\n")## Not run: system(paste("echo", shQuote(test)))test <- "don't do it!"cat(shQuote(test), "\n")

tryit <- paste("use the", sQuote("-c"), "switch\nlike this")cat(shQuote(tryit), "\n")## Not run: system(paste("echo", shQuote(tryit)))cat(shQuote(tryit, type = "csh"), "\n")

## Windows だけの例.perlcmd <- 'print "Hello World\n";'## Not run: shell(paste("perl -e", shQuote(perlcmd, type = "cmd")))

sign Sign Function

Description

signは xの要素の対応する符号を持つベクトルを返す (実数の符号は実数がそれぞれ正,ゼロ,負であれば 1, 0,又は −1).

signは複素数には適用されない.

Usage

sign(x)

Page 486: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

486 Signals

Arguments

x 数値ベクトル

Details

これは内部総称的なプリミティブ関数である:メソッドを直接に,又は Mathグループ総称的に定義できる.

See Also

abs

Examples

sign(pi) # == 1sign(-2:3) # -1 -1 0 1 1 1

Signals Interrupting Execution of R

Description

SIGUSR1 を受け取ると R は作業空間を保存し終了する. SIGUSR2 は同じ結果を持つが.Last関数と on.exit表現式は呼び出されない.

Usage

kill -USR1 pidkill -USR2 pid

Arguments

pid Rプロセスのプロセス ID.

Details

正常な終了であるかのようにコマンド履歴も保存される.

これはWindowsでは利用できず,これらのシグナルをサポートしない他の OSでも恐らく同様である.

警告

シグナルが送られた時,一つ又はそれ以上の Rオブジェクトが変更途上である可能性がある.これらのオブジェクトは破損した形で保存される可能性がある.

See Also

将来の使用のためプロセス IDを報告するためには Sys.getpid.

Page 487: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

sink 487

sink Send R Output to a File

Description

sinkは R出力をコネクションに転送する.

sink.number()は幾つの転送が使われているかを報告する.

sink.number(type = "message")は現在エラーメッセージのために使われているコネクションの数を報告する.

Usage

sink(file = NULL, append = FALSE, type = c("output", "message"),split = FALSE)

sink.number(type = c("output", "message"))

Arguments

file 書き込み可能なコネクション,又は書き込みがされるファイルの名前を与える文字列,もしくはシンクを停止するには NULL.

append 論理値.もし TRUEなら出力は fileに付け加えられる;さもなければfileの内容を書き換える.

type 文字列.出力ストリームかメッセージストリーム.名前は部分マッチングされ短縮化できる.

split 論理値:もし TRUEなら,Unixプログラム teeの様に,出力は新しいシンクと現在の出力ストリームに送られる.

Details

sinkは Rの出力を転送する.もし fileが文字列ならばその名前を持つファイルコネクションが転送の間確立される.

正常な R出力(コネクション stdoutへの)は既定の type = "output"で転送される.プロンプトと(殆どの)メッセージはコンソールに現れ続ける. stderr()に送られたメッセージ(message, warningそして stopからのものを含む)は sink(type = "message")で転送される(下を見よ).

sink()又は sink(file = NULL)は最後の(指定のタイプの)転送を停止する.正常な出力に対する転送のスタックがあり,従って出力は先の転送(もしあれば)に戻る.スタックは最大 21コネクション(20転送)である.

もし fileがコネクションならば,それは必要に応じて開かれ (モード "wt"で)そしてそれが転送のスタックから取り除かれると閉じられる.

split = TRUEは R出力(Rvprintfを使い)と writeLinesからの既定の出力だけを分割する:それは stdout()に送られるかもしれない全ての出力を分割しない.

メッセージストリームのシンクは細心の注意でなされるべきである.ストリームに対する fileは既に開かれているコネクションで無ければならず,そしてコネクションのスタックは無い.

もし fileが文字列ならば,ファイルが現在のエンコーディングを使い開かれる.もし別のエンコーディングを使いたければ(例えば,UTF-8で保存された文字列を表現するため

Page 488: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

488 sink

に) fileコネクションを使う—しかし R出力を生み出すある種の方法はそうした文字列を既に現在のエンコーディングに変換している.

Value

sinkは NULLを返す.

sink.number()に対しては出力の転送の数 (0, 1, 2, . . . ).

sink.number("message")に対してはメッセージに使われているコネクションの数.もし転送が使われていなければ 2.

警告

sink用に開かれたコネクションを何にもせよ他の目的に使ってはならない.そうしたものを不注意に閉じるとソフトウェアは停止するであろう.

メッセージストリームは,ソースコードの実装と従ってその落とし穴を理解していない限りシンクすべきではない.

References

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

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.

See Also

capture.output

Examples

sink("sink-examp.txt")i <- 1:10outer(i, i, "*")sink()unlink("sink-examp.txt")

## 全ての出力をファイルに捕捉する.zz <- file("all.Rout", open = "wt")sink(zz)sink(zz, type = "message")try(log("a"))## コンソールに戻るsink(type = "message")sink()file.show("all.Rout")

Page 489: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

slice.index 489

slice.index Slice Indexes in an Array

Description

与えられた配列中のそれらのスライスの数を指示する整数行列を返す.

Usage

slice.index(x, MARGIN)

Arguments

x 配列.もし xが次元属性を持たなければ一次元の配列と見做される.

MARGIN そこでスライスされる次元番号を与える整数.

Value

xのそれらに対応する次元を持つ整数配列 yで,次元 MARGINに関するスライス番号 iの全ての要素は値 iを持つ.

See Also

行と列添字を決定するには rowと col;実際,これらは xが行列なら MARGINが 1と 2に対応する slice.indexの特殊例と考えることが出来る.

Examples

x <- array(1 : 24, c(2, 3, 4))slice.index(x, 2)

slotOp Extract or Replace A Slot

Description

形式的 (S4)クラス構造を持つオブジェクト中のスロットの内容を取り出す又は置き換える.

Usage

object@nameobject@name <- value

Arguments

object 形式的に定義される (S4)クラスからのオブジェクト.name スロットの文字列の名前,引用化されているかされていない. object

のクラスの定義中のスロットの名前でなければならない.

value スロットに対する置き換え値で, objectのクラスの定義中のこのスロットに対して定義されたクラスと両立するクラスからのものでなければならない.

Page 490: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

490 socketSelect

Details

これらの演算子はパッケージ methodsの形式的クラスをサポートし,パッケージ meth-odsがロードされた時だけ(既定として)有効になる.これ以上の詳細,特に slot()と @演算子の違い,に付いては slotを見よ.

objectが S4オブジェクトかどうかがチェックされ(isS4を見よ),そして他のオブジェクトに対して @を使おうとするとエラーになる. (内部的使用に対してだけは名前 .Dataに対する例外がある.)置き換え演算子はオブジェクトにスロットが既に存在するかどうかをチェックする (オブジェクトが実際に主張されているクラスからのものであれば存在するはずである).

R 3.0.0以前では置き換え演算子はパッケージ methods中にあり, nameの適正さに対する異なったテストを持っていた.

これらは内部総称的演算子である:InternalMethodsを見よ.

Value

スロットの現在の内容.

See Also

Extract, slot

socketSelect Wait on Socket Connections

Description

幾つかのソケットコネクションの最初のものが利用できるのを待つ.

Usage

socketSelect(socklist, write = FALSE, timeout = NULL)

Arguments

socklist 開かれたソケットコネクションのリスト.

write 論理値.もし TRUEなら対応するソケットが書き込み用に利用でまで待つ.さもなければそれが読み込み用に離島できるまで待つ.

timeout 数値又は NULL.ソケットが利用できるまで待つ時間(秒); NULLはいつまでも待つことを意味する.

Details

write中の値は論理値ベクトルが socklistと同じ長さになるまで必要に応じてリサイクル使用される.ソケットコネクションは socklist中に一度以上登場できる;これはソケットコネクションが読み取りもしくは書き込み用に利用できるかを決定したいときに有用になる.

Value

socklist と同じ長さの論理値ベクトルで対応するソケットコネクションが体操するwriteに応じて利用できるかどうかを指示する.

Page 491: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

solve 491

Examples

## Not run:## ソケットコネクション s が書き出し又は読み込み用に利用できるかどうかを検査socketSelect(list(s, s), c(TRUE, FALSE), timeout = 0)

## End(Not run)

solve Solve a System of Equations

Description

この総称的関数は方程式 a %*% x = bを xについて解く.ここで bはベクトルでも行列でも良い.

Usage

solve(a, b, ...)

## Default S3 method:solve(a, b, tol, LINPACK = FALSE, ...)

Arguments

a 正方数値もしくは複素数行列で線形システムの係数を含む.論理値行列は数値に変換される.

b 線形システムの右辺値を与える数値もしくは複素数ベクトル又は行列.もし欠損していれば bは単位行列で solveは aの逆行列を返す.

tol aの列の間の線形従属性を検出するための許容度で .Machine$double.epsが既定値.現在複素行列 aに対しては使われない.

LINPACK 論理値.廃止され無視される.

... 他のメソッドに・から渡される追加引数.

Details

a又は bは複素数値であって良いが,これは倍精度複素算術を使っており全てのプラットフォームで利用できるとは限らない.

結果の行と列名はそれぞれ aと/又は bの列名から取られる.もし bが無ければ結果の列名は aの行名である. aの列名が bの行名が等しいかどうかのチェックはされない.

過去との互換性から aは(実) QR分解であって良いが,その場合は qr.solveが呼ばれるべきである. qr.solveは非正方システムを扱える.

基礎にある LAPACKコードからの不成功の結果は正のエラーコードを与えるエラーになる:これらは FORTRANコードの詳細な吟味だけによって解釈できる.

Source

既定のメソッドは LAPACKルーチン DGESVと ZGESVへのインタフェイスである.

LAPACKは http://www.netlib.org/lapackにある.

Page 492: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

492 sort

References

Anderson. E. and ten others (1999) LAPACK Users’ Guide. Third Edition. SIAM.Available on-line at http://www.netlib.org/lapack/lug/lapack_lug.html.

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

See Also

qr メソッドについては solve.qr. Choleski 因子からの逆行列に付いては chol2inv.backsolve, qr.solve.

Examples

hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }h8 <- hilbert(8); h8sh8 <- solve(h8)round(sh8 %*% h8, 3)

A <- hilbert(4)A[] <- as.complex(A)## 全てのプラットフォームではサポートされていないかもしれないtry(solve(A))

sort Sorting or Ordering Vectors

Description

ベクトルや因子を(部分的に)増加又は減少順にソート(又は順位付け)をする.一つ以上の変数に沿って順位付けをする,例えばデータフレームのソート,には orderを見よ.

Usage

sort(x, decreasing = FALSE, ...)

## Default S3 method:sort(x, decreasing = FALSE, na.last = NA, ...)

sort.int(x, partial = NULL, na.last = NA, decreasing = FALSE,method = c("shell", "quick"), index.return = FALSE)

Arguments

x sortに対してはクラスを持つ Rオブジェクトか数値,複素数又は論理値.sort.intに対しては数値,複素数,文字列ベクトル,又は因子.

decreasing 論理値.ソートは増加順か減少順か?部分ソートでは利用できない.

... メソッドから・へ渡される引数,又は(既定メソッドとクラス無しのオブジェクトに対して) sort.intへの引数.

na.last NAの扱いを制御する.もし TRUEならデータ中の欠損値は最後に置かれる;もし FALSEならそれらは最初に置かれる;もし NAならそれらは除かれる.

Page 493: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

sort 493

partial NULL又は部分ソートのための添字ベクトル.

method 使用するアルゴリズムを指定する文字列.部分ソートに対しては利用できない.短縮できる.

index.return 順序付けの添字もまた返すべきかを指示する論理値;これは僅かなケース,既定の na.last = NAと非因子の完全ソート,だけで使える.

Details

sortは総称的でありメソッドを書くことが出来る.そして sort.intはもし最初の三つの引数が使われると Sと互換性がある内部メソッドである.

既定の sortメソッドはクラス付きオブジェクトに対して orderを使い,これは更に総称的関数 xtfrmを使う (そして xtfrmメソッドが定義されていないか is.numeric(x)が真でなければ遅い可能性).

複素数は先ず実部に関して,次に虚部についてソートされる.

文字列ベクトルのソート順序は使用中のロケールの照合列に依存する: Comparisonを見よ.因子に対するソート順序はそれらの水準の順序である(これらは特に順序付き因子に対して適切である).

もし partialが NULLで無ければ,部分ソートによりソートされた配列中のそれらの正しい位置に置かれる結果の要素の添字を含むとされる.特定の位置における結果の値の各々に対して,それより小さな任意の値はソートされた配列中でより小さな値を持つことが保証され,より大きな任意の値はソートされた配列中でより大きな値を持つことが保証される.(これは効率性のために含められ,そしてオプションの多くは部分ソートに対しては利用できない.これは partialが一握りの要素を持つ時だけ本質的により効率的であり,そして完全なソートは 10以上ある時行われる(もし可能ならクイックソート)).名前は部分ソートでは捨て去られる.

メソッド "shell"はシェルソートを使う(Sedgewick (1986)からの O(n4/3)の変種を使う).もし xが名前を持てば安定な修正が使われるので,タイは再順序化されない. (これは名前がある時だけ関係する.)

メソッド "quick"は Singleton (1969)の Hoareのクイックソートメソッドの実装を使い,xが数値(倍精度又は整数)で partialが NULLの時だけ利用できる.(xの他の型に対してはシェルソートが黙って使われる.)これは普通シェルソートより若干速い (恐らく百万の長さのベクトルでは 50%速く,千万では倍早い)が稀な最悪ケースでは貧弱な性能を持つ.(Petoの擬似乱数の中点を使う修正が最悪ケースをより稀にするために使われる.)これは安定なソートではなく,タイは再順序化されるかもしれない.

100,000水準以下の因子は methodが提供されない時 radixでソートされる:sort.listを見よ.

Value

sortに対しては結果は選択適用される S3メソッドに依存する.もし xがクラスを持たなければ sort.intが使用され,その説明が適用される.市営されたメソッドを持たないクラス付きオブジェクトに対しては既定メソッドが使われ,x[order(x, ...)] と等しくなる:これは [に対する適当なメソッドを持つクラスに依存する (そしてまた orderが作用するものに依存し,これはリストに基づくクラスに対しては該当しない).

sort.intに対しては値はソートされたベクトルである.例外は index.returnが真の時で,結果はソートされた数値と順序付ける添字ベクトルを含む xと ixという名前の成分を持つリストである.後者の場合,もし method == "quick"ならばクイックソートは安定ではないので,(sort.listとは異なり)タイは順序付けで保存される. NB:添字ベクトルはNAを除いた後の要素番号を参照する:もし元々の要素番号が欲しければ orderを見よ.

Page 494: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

494 sort

全ての属性は名前を除き返り値からは取り除かれる (Becker et al, 1988, p.146を見よ),名前はソートされている. (もし partialが指定されていると名前すら取り除かれる.)これは返り値が因子と順序付き因子を除き如何なるクラスも持たないことを意味する(これらのクラスは特別に処理され,その結果は元々のクラスに変換し戻される).

References

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

Knuth, D. E. (1998) The Art of Computer Programming, Volume 3: Sorting and Searching. 2nd ed.Addison-Wesley.

Sedgewick, R. (1986) A new upper bound for Shell sort. J. Algorithms 7, 159–173.

Singleton, R. C. (1969) An efficient algorithm for sorting with minimal storage: Algorithm 347.Communications of the ACM 12, 185–187.

See Also

文字列がどのように並べられるかについては ‘Comparison’.

複数の変数のソートや再順位付けについては order.

is.unsorted. rank.

Examples

require(stats)

x <- swiss$Education[1:25]x; sort(x); sort(x, partial = c(10, 15))

## '安定な' ソーティング(タイの):sort(c(10:3, 2:12), method = "sh", index.return = TRUE) # 安定している## $x : 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 12## $ix: 9 8 10 7 11 6 12 5 13 4 14 3 15 2 16 1 17 18 19sort(c(10:3, 2:12), method = "qu", index.return = TRUE) # ではない## $x : 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 12## $ix: 9 10 8 7 11 6 12 5 13 4 14 3 15 16 2 17 1 18 19

x <- c(1:3, 3:5, 10)is.unsorted(x) # FALSE: ソートされているis.unsorted(x, strictly = TRUE) # TRUE : ではない(そしてあり得ない)

# 厳密にソートされている## Not run:## ささやかな速度の比較実験:N <- 2000Sim <- 20rep <- 1000 # << 自分の CPU に合わせるc1 <- c2 <- numeric(Sim)for(is in seq_len(Sim)){

x <- rnorm(N)c1[is] <- system.time(for(i in 1:rep) sort(x, method = "shell"))[1]c2[is] <- system.time(for(i in 1:rep) sort(x, method = "quick"))[1]stopifnot(sort(x, method = "s") == sort(x, method = "q"))

}rbind(ShellSort = c1, QuickSort = c2)cat("Speedup factor of quick sort():\n")

Page 495: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

source 495

summary({qq <- c1 / c2; qq[is.finite(qq)]})

## より大きなセットx <- rnorm(1e7)system.time(x1 <- sort(x, method = "shell"))system.time(x2 <- sort(x, method = "quick"))stopifnot(identical(x1, x2))

## End(Not run)

source Read R Code from a File or a Connection

Description

sourceは Rに名前付きファイルや URLやコネクションからその入力を受け入れるようにする.入力は読み込まれ,そしてそのファイルからファイルが最後に到達するまでparseされる.それから構文解析された表現式が選択された環境中で逐次的に評価される.

Usage

source(file, local = FALSE, echo = verbose, print.eval = echo,verbose = getOption("verbose"),prompt.echo = getOption("prompt"),max.deparse.length = 150, chdir = FALSE,encoding = getOption("encoding"),continue.echo = getOption("continue"),skip.echo = 0, keep.source = getOption("keep.source"))

Arguments

file コネクションか,そこから読み取るファイルや URLのパス名を与える文字列.""はコネクション stdin()を指示する.

local TRUE, FALSE又は環境で,構文解析された表現式を評価するかを決める.FALSE (既定)はユーザの作業空間に,TRUEはそこから sourceが呼びだされた環境に対応する.

echo 論理値;もし TRUEなら各表現式は構文解析後評価される前にプリントされる.

print.eval 論理値;もし TRUEなら, eval(i)の結果は各表現式 i毎にプリントされる;既定値は echoに値.

verbose もし TRUEなら,より多くの診断(単なる echo = TRUEよりも)が各表現式に対する追加の情報を含み構文解析と入力の評価の途中でプリントされる.

prompt.echo 文字列;もし echo = TRUEなら使われるプロンプトを与える.

max.deparse.length

整数;echoが TRUEの時だけ使われ,一つの表現式の逆構文解析に対する出力の最大文字数を与える.

chdir 論理値;もし TRUEで fileがパス名なら, Rの作業ディレクトリは一時的に評価されるのための fileを含むディレクトリに変更される.

Page 496: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

496 source

encoding 文字列.file が文字列の時仮定されるエンコーディング. file を見よ.可能な値はエンコーディングが推測されるときは "unknown":‘エンコーディング’節を見よ.

continue.echo 文字列;echo = TRUEの時継続行に使われるプロンプトを与える.

skip.echo 整数;echo = TRUEの時ファイルの冒頭のコメント行を幾つスキップするか.

keep.source 論理値:もし可能なら,表現式をエコーする時ソース書式を保存するか?

Details

sourceを使ってコードを実行することは,それを Rのコマンドラインから入力することと幾つかの点で異なる.表現式はトップレベルで実行されないので自動プリントはされない.従ってプリントしたいものに対して明示的に print呼び出しを含める必要がある(そしてこれは latticeによるプロットを含むことを注意する,FAQ Q7.22).ファイルはその一部を実行する前に全て構文解析されるので,構文エラーはコードが全く実行されない結果になる.もし構文的に正しいスクリプトの実行中にエラーが起こると,実行されたコードにより作業空間中に付値されたものは全て保存される (コマンドラインからと同じように)が,traceback()のような診断情報は withVisibleへの追加の呼び出しを含む.

Rの全てのバージョンは行の終わりが LF (Unixのような), CRLF (DOS/Windowsで使われる)又は CR (クラッシクな Mac OSで使われる)でマークされたコネクションからの入力を受け入れ,これを newlineにマップする.最終行は不完全でも良い,つまり行末マーカーが欠損しても良い.

もし keep.sourceが真(対話的な使用では既定値)ならば,関数のソースは保存され正確に入力と同じに表示できる.

コンソールからの入力とは異なり,ファイル中やコネクション上の行は文字を無制限に含むことが出来る.

もし skip.echo > 0なら,ファイルの先頭のその数の行がエコーされない.これはコードの実行には全く影響しない.もし最初の skip.echo行に実行行があれば,それらの最初からエコーが始まる.

もし echoが真で逆構文解析された表現式が max.deparse.lengthを超えると,その数の文字が出力されその後に .... [TRUNCATED] が続く.

エンコーディング

既定では入力は Rセッションの現在のエンコーディングで読み込まれ構文解析される.これは普通要求されることであるが,時として再エンコーディングが必要になる,例えば UTF-8を使うシステムからのファイルがWindowsに読み込まれる時 (そしてその逆)がそうである.

このパラグラフの残りは fileが実際のファイル名か URL (そして ""でもなくコネクションでもない)の時に適用される.もし encoding = "unknown"ならエンコーディングを推測しようとする: localeToCharset() がガイドとして使われる.もし encoding が二つもしくはそれ以上の要素を持てば,ファイル/URLが試行されたエンコーディングでエラー無しに読み取れるまでそれらが順に試される.もし実際の encodingが Latin-1やUTF-8中で指定されると(既定や "unknown"で無く)結果中の文字列は現在のエンコーディングに翻訳され,そうしたものとしてマークされる(Encodingを見よ).

もし fileがコネクションなら(""で指定されるものを含む),入力を source内部で再エンコーディングすることが出来ず,従って encoding引数が構文解析された入力中の文字列を Latin-1と UTF-8ロケールに単にマークするのに使われる: parseを見よ.

Page 497: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Special 497

References

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

See Also

sourceを使う demo; eval, parseそして scan; options("keep.source").

ファイルを環境中にソースするストリームライン版 sys.source.

ソースのダイレクティブの議論は ‘The R Language Definition’.

Examples

## もし幾つものファイルを source() したければ,次のようにすると役に絶つsourceDir <- function(path, trace = TRUE, ...) {

for (nm in list.files(path, pattern = "[.][RrSsQq]$")) {if(trace) cat(nm,":")source(file.path(path, nm), ...)if(trace) cat("\n")

}}

Special Special Functions of Mathematics

Description

ベータ関数とガンマ関数に関連した特殊数学関数.

Usage

beta(a, b)lbeta(a, b)

gamma(x)lgamma(x)psigamma(x, deriv = 0)digamma(x)trigamma(x)

choose(n, k)lchoose(n, k)factorial(x)lfactorial(x)

Arguments

a, b 非負数値ベクトル.

x, n 数値ベクトル.

k, deriv 整数ベクトル.

Page 498: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

498 Special

Details

関数 betaと lbetaはベータ関数とその自然対数を返す.

B(a, b) =Γ(a)Γ(b)

Γ(a+ b).

形式的な定義は

B(a, b) =

∫ 1

0

ta−1(1− t)b−1dt

(Abramowitz and Stegun section 6.2.1, page 258). Rではこれは非負の aと bに対してだけ定義されており,もしどちらかがゼロなら無限になることを注意しよう.

関数 gammaと lgammaはガンマ関数とその絶対値の自然対数を返す.ガンマ関数は次のように定義される(Abramowitz and Stegun section 6.1.1, page 255)

Γ(x) =

∫ ∞0

tx−1e−tdt

ここで xはゼロと負整数を除く(その時は NaNを返す)すべての実数である. ‘-10’以下の非整数にあまりに近い(約 10−8))時は精度が損失する可能性が有り警告が出る.

factorial(x) (非負整数 x に対しては x!) は gamma(x+1) として,そして lfactorial はlgamma(x+1)として計算される.

関数 digammaと trigammaはガンマ関数の対数の 1次と2次の導関数を返す.psigamma(x, deriv)(deriv >= 0)は ψ(x)の deriv-次導関数である.

digamma(x) = ψ(x) =d

dxln Γ(x) =

Γ′(x)

Γ(x)

ψ とその導関数 psigamma() 関数はしばしば ‘polygamma’ 関数とよ呼ばれる.例えばAbramowitz and Stegun (section 6.4.1, page 260);そして高次(deriv = 2:4)の導関数は‘tetragamma’, ‘pentagamma’,そして ‘hexagamma’と呼ばれることがある.

関数 chooseと lchooseは2項係数とその絶対値の自然対数を返す.choose(n, k)はすべての実数 n と整数 k に対して定義されることを注意しよう.k ≥ 1 に対してはこれはn(n− 1) · · · (n− k+ 1)/k!,と定義され, k = 0では 1で,負の kでは 0となる.整数でない値 kは整数に丸められ,警告が出る.choose(*, k) は小さな k に対しては精度と速さの観点から直接([l]gamma を呼び出さず)計算される.すべての可能な組み合わせの数については関数 combn (パッケージutils)を見よ.

gamma, lgamma, digammaそして trigamma関数は内部総称的でプリミティブな関数である:それらに対するメソッドを個別に,もしくは Mathグループ総称的に書くことが出来る.

Source

gamma, lgamma, betaそして lbetaは Los Alamos Scientific LaboratoryのW. FullertonによるFortranサブルーチン(現在は SLATECの一部として入手可能)の C翻訳版に基づく.

digamma, trigammaそして psigammaは以下に基づく

Amos, D. E. (1983). A portable Fortran subroutine for derivatives of the psi function, Algorithm610, ACM Transactions on Mathematical Software 9(4), 494–502.

Page 499: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Special 499

References

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

Abramowitz, M. and Stegun, I. A. (1972) Handbook of Mathematical Functions. New York: Dover.https://en.wikipedia.org/wiki/Abramowitz_and_Stegun はパブリックドメインであるフルテキストへのリンクを与える.Chapter 6: Gamma and Related Functions.

See Also

単純な数学関数については Arithmetic,その他の数学関数は sqrt,実ベッセル関数については Bessel.

不完全ガンマ関数については pgammaを見よ.

Examples

require(graphics)

choose(5, 2)for (n in 0:10) print(choose(n, k = 0:n))

factorial(100)lfactorial(10000)

## gamma は 0, -1, -2, ... に1次の極を持つ## これは精度落ちの警告を出すので,警告を出さないようにするop <- options("warn")options(warn = -1)x <- sort(c(seq(-3, 4, length.out = 201), outer(0:-3, (-1:1)*1e-6, "+")))plot(x, gamma(x), ylim = c(-20,20), col = "red", type = "l", lwd = 2,

main = expression(Gamma(x)))abline(h = 0, v = -3:0, lty = 3, col = "midnightblue")options(op)

x <- seq(0.1, 4, length.out = 201); dx <- diff(x)[1]par(mfrow = c(2, 3))for (ch in c("", "l","di","tri","tetra","penta")) {

is.deriv <- nchar(ch) >= 2nm <- paste0(ch, "gamma")if (is.deriv) {dy <- diff(y) / dx # 有限差分der <- which(ch == c("di","tri","tetra","penta")) - 1nm2 <- paste0("psigamma(*, deriv = ", der,")")nm <- if(der >= 2) nm2 else paste(nm, nm2, sep = " ==\n")y <- psigamma(x, deriv = der)

} else {y <- get(nm)(x)

}plot(x, y, type = "l", main = nm, col = "red")abline(h = 0, col = "lightgray")if (is.deriv) lines(x[-1], dy, col = "blue", lty = 2)

}par(mfrow = c(1, 1))

## "拡張" パスカル三角形:

Page 500: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

500 split

fN <- function(n) formatC(n, width=2)for (n in -4:10) {

cat(fN(n),":", fN(choose(n, k = -2:max(3, n+2))))cat("\n")

}

## choose() の R コード版 [単純; k < 0 で警告]:mychoose <- function(r, k)

ifelse(k <= 0, (k == 0),sapply(k, function(k) prod(r:(r-k+1))) / factorial(k))

k <- -1:6cbind(k = k, choose(1/2, k), mychoose(1/2, k))

## n = 1/2 に対する二項定理;## sqrt(1+x) = (1+x)^(1/2) = sum_{k=0}^Inf choose(1/2, k) * x^k :k <- 0:10 # 有効桁数9までは10で十分:sqrt(1.25)sum(choose(1/2, k)* .25^k)

split Divide into Groups and Reassemble

Description

splitはベクトル x中のデータを fで定義されるグループ中に分割する.置き換え形式はそうした分割に対応して値を置き換える. unsplitは splitの効果を逆転する.

Usage

split(x, f, drop = FALSE, ...)split(x, f, drop = FALSE, ...) <- valueunsplit(value, f, drop = FALSE)

Arguments

x グループに分割される値を含むベクトルかデータフレーム.

f グループを定義する as.factor(f)の意味での‘因子’,又はそうした因子のリストでそれらの交互作用がグルーピングに使われる.

drop 登場しない水準を捨てるかどうかを指示する論理値 (もし f が factorかリストなら).

value xの分割と両立性があるベクトルのリストかデータフレーム.長さがマッチしなければリサイクルされる.

... メソッドに渡される追加の可能な引数.

Details

splitと split<-は総称的関数で既定と data.frameメソッドを持つ.データフレームメソッドは行列を行列のリストに分割するのにも使え,明示的に起動されれば置き換え形式も同様である.

Page 501: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

split 501

unsplitはベクトルのリストやデータフレームに対して動作する (あたかも splitで作られたかのように両立する構造を持つと仮定して). それは要素や行を fで与えられる位置に置き戻す.データフレームケースでは行名は valueの要素からの行名ベクトルを逆分割することで得られる.

fは必要に応じてリサイクルされ,もし xの長さが fの長さの倍数で無ければ警告がプリントされる.

f中の任意の欠損値は xの対応する値と共に捨てられる.

既定メソッドは interactionを呼び出す.もし因子の水準が ‘.’ を含むと,それらは期待されるように分割されないので,メソッドは水準を結合する引数 sepを持つ.

Value

splitが返す値はグループに対する値を含むベクトルのリストである.リストの成分は fの水準で名前が付く (因子に変換後,又はもし既に因子で drop = TRUEならば使用されない水準は捨てられる).

置き換え形式はそれらの右辺側を返す.unsplitはそれに対して split(x, f)が valueに等しいベクトルかデータフレームを返す.

References

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

See Also

数値をカテゴリー化するには cut.

文字列の分解には strsplit.

Examples

require(stats); require(graphics)n <- 10; nn <- 100g <- factor(round(n * runif(n * nn)))x <- rnorm(n * nn) + sqrt(as.numeric(g))xg <- split(x, g)boxplot(xg, col = "lavender", notch = TRUE, varwidth = TRUE)sapply(xg, length)sapply(xg, mean)

### グループ毎に 'z スコア' を計算する(平均ゼロで分散 1 に標準化する)z <- unsplit(lapply(split(x, g), scale), g)

# または

zz <- xsplit(zz, g) <- lapply(split(x, g), scale)

# そしてグループ内の標準偏差が本当に 1 かどうかチェックtapply(z, g, sd)tapply(zz, g, sd)

### データフレーム版

Page 502: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

502 sprintf

## 変数が加えられているので付値形式は使われない

g <- airquality$Monthl <- split(airquality, g)l <- lapply(l, transform, Oz.Z = scale(Ozone))aq2 <- unsplit(l, g)head(aq2)with(aq2, tapply(Oz.Z, Month, sd, na.rm = TRUE))

### 行列を列でリストに分割ma <- cbind(x = 1:10, y = (-4:5)^2)split(ma, col(ma))

split(1:10, 1:2)

sprintf Use C-style String Formatting Commands

Description

C関数 sprintfのラッパであり,テキストと変数の値の整形化されたコンビネーションを含む文字列ベクトルを返す.

Usage

sprintf(fmt, ...)gettextf(fmt, ..., domain = NULL)

Arguments

fmt 整形文字列の文字列ベクトルで,各々は最大 8192バイト.

... fmt 中に渡される値.論理値,整数,実数そして文字列ベクトルだけがサポートされるが,ある種の変換が行われる:‘詳細’節を見よ.最大100.

domain gettextを見よ.

Details

sprintfはシステムの sprintf Cライブラリのラッパである.渡された値のモードが与えられた形式的引数にマッチするかどうかチェックがされ, Rの特殊値 (NA, Inf, -Infそして NaN)が正確に処理される.

gettextfは整形文字列の翻訳を伴う C風の文字列整形を提供する便利な関数である.

引数(fmt を含む)は可能なら最長のものの長さの全倍数回リサイクルされ,それから整形が並列で行われる.長さがゼロの引数が許され長さがゼロの結果を与える.全ての引数は使われなくても評価され,従って幾つかのタイプ (例えば "symbol"や "language",typeofを見よ)は許されない.

以下は Kernighan and Ritchie から取った(参考文献を見よ):しかしながら実際の移植はC99標準に倣っており,詳細 (特にユーザーエラーの際の)はプラットフォームに依存するかもしれない.

Page 503: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

sprintf 503

文字列 fmt は出力文字列を通して渡される普通の文字列と,また ... を通じて提供される引数に作用する変換指定を含む.許される変換指定は % で始まりセットaAdifeEgGosxX%中の文字の一つで終わる.文字は次のタイプを表す:

d, i, o, x, X 整数値, oは8進数,xと Xは16進数(a-fに対してはコードと文字の大小を使う).正確に整数な数値は整数に変換される.書式 dと iは論理変数にも使われ, 0,1又は NAに変換される.

f "[-]mmm.ddd"の形式の “固定小数点”10進数表記の倍精度値.小数部分の数("d")は精度で指定される:既定は 6;精度 0は小数部分を抑制する.有限でない値は NA, NaN又は(恐らく符号に続く) Inf.

e, E [-]m.ddde[+-]xxまたは [-]m.dddE[+-]xxの形式の “指数表記の”10進数表記の倍精度値,

g, G 倍精度値.%e又は %E書式でもし指数部が -4以下か精度に等しいか大きい時 ,さもなければ %f書式. (精度(既定値 6)はここでは有効桁数を指定する一方, %f, %eではそれは小数点以下の数字の数である.)

a, A 倍精度値.[-]0xh.hhhp[+-]dの形式のバイナリ表記.これは16進数で表されたバイナリ小数で 2の(10進)巾乗が掛かっている.小数点の後の16進数の数は精度で指定される:既定値は内部表現を正確に表現するのに十分な数である.有限でない値はNA, NaNまたは (恐らく符号のあとに続く) Infに変換される.書式 %aは x, pそして16進値に対して小文字を使い,書式 %Aは大文字を使う.

これは C99 の特性であるから全てのプラットフォームでサポートされているべきである.書式はユニークには定義されない:先頭の hを常に0や1にすることは可能ではあるが,これは常にはされない.殆どシステムは末尾のゼロは抑制されるが,しないものも少しある.良く書かれたプラットフォームでは,正規の数に対しては小数点の前に先頭の1プラス(既定で)13の 16進数で従って 53ビットになる.非正規数(もしくは ‘副正規’)の扱いは非常にプラットフォーム依存である.

s 文字列.NAは "NA"に変換される.

% 文字通りの % (このケースでは以下に与えられる余分な整形文字は許されない.

as.characterによる変換は sと共に文字でない引数に対して使われ,そして倍精度でない引数に対しては f, e, E, g, Gとともに as.doubleが使われる. NB:長さは変換前に決められるので,もしそれが長さを変更するならば内部変換を信用しない.変換は一度だけ行われるので,もし length(fmt) > 1ならば全ての要素は同じ引数の型を期待すべきである.

加えて,最初の %と最後の変換文字の間には以下が任意の順序で現れて良い:

m.n ピリオッドで分離された二つの数で,欄幅 (m)と精度 (n)を表す.

- 変換された引数をその欄内で左揃え.

+ 常に符号付きで数をプリントする:既定では負の数が符号付きでプリントされる.

スペース もし最初の文字が符号でなければスペースを先に置く.

0 数に対して,欄幅を先頭のゼロで埋める.文字列に対してはある種のプラットフォームではこのゼロ補填が行われ,他では無視される.

# 数に対する“別種の出力”を指定する.その動作はタイプに依存する: xや Xに対しては 0xや 0Xがゼロでない結果の前に付けられる. e, e, f, gそして Gに対しては出力は常に小数点を持つ; gと Gに対しては末尾のゼロは取り除かれる.

更に, %の直後に名前付き引数を参照する 1$から 99$が来るかもしれない:これは引数を順番を無視して参照することを許し,主にエラーメッセージの翻訳を念頭に置いている.もしこれを行うなら全ての書式に番号がついていれば最良である:さもなければ番

Page 504: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

504 sprintf

号がついていないものが引数をその順で処理する.例を見よ.この表記は引数を一度以上使うことを許す.その場合それらは同じタイプ(整数,倍精度,そして文字列)として使われる.

欄幅や精度(しかし双方ではない)はアステリスク *で指示される:この場合引数の一つは希望の数を指定する.負の欄幅は ’-’フラグの後に正の欄幅が続く.負の精度は精度が省略されているかのように扱われる.引数は整数でなければならないが,倍精度の引数は整数に変換される.

fmtの要素に付いては 8192バイトの制限があり,文字列については一つの %文字変換指定から含められる.

C標準順で述べられているように,欄幅と精度の %s変換はバイトとして解釈され,文字としてではない.

Rの数値ベクトルで使われる C倍精度は符号付きのゼロを持ち,これは sprintfは -0,-0.000 . . .の様に出力するかもしれない.

Value

最長の入力のそれに等しい長さの文字列ベクトル.もし fmt の任意の要素又は文字列引数が UTF-8 と宣言されていると,結果の要素は UTF-8 になり,エンコーディングがUTF-8として宣言される.さもなければそれは現在のロケール中にある.

警告

整形文字は OSの sprintf関数に下げ渡され,そして不正確な書式は後者に Rプロセスをクラッシュさせる. Rは書式の健全さをチェックするが,可能なユーザーエラーの全てが全てのプラットフォームで検査されているわけではなく,幾つかは破滅的かもしれない.

ここで文章化されていない入力に関する挙動は‘未定義’であり,プラットフォームにより異なることが認められていることを意味する.

Author(s)

Jonathan Rougierによるオリジナルコード.

References

Kernighan, B. W. and Ritchie, D. M. (1988) The C Programming Language. Second edition, Pren-tice Hall. Describes the format options in table B-1 in the Appendix.

C標準,特に ‘C99’に対しては ISO/IEC 9899:1999.リンクは http://developer.r-project.org/Portability.htmlにある.

Unix風システムでは man sprintf.

See Also

数値のベクトルを同じような方法で整形するには formatC.

テキストと値を結びつけたベクトルを作る別の方法は paste.

テキストの自動翻訳については gettext.

Page 505: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

sprintf 505

Examples

## 整形に注意する:R で最も問題になるのは実数である## 整数値の実数だけが整数に変換される.

sprintf("%s is %f feet tall\n", "Sven", 7.1) # OKtry(sprintf("%s is %i feet tall\n", "Sven", 7.1)) # not OK

sprintf("%s is %i feet tall\n", "Sven", 7 ) # OK

## % を文字通りに使う:

sprintf("%.0f%% said yes (out of a sample of size %.0f)", 66.666, 3)

## pi の様々な整形:

sprintf("%f", pi)sprintf("%.3f", pi)sprintf("%1.0f", pi)sprintf("%5.1f", pi)sprintf("%05.1f", pi)sprintf("%+f", pi)sprintf("% f", pi)sprintf("%-10f", pi) # 左揃えsprintf("%e", pi)sprintf("%E", pi)sprintf("%g", pi)sprintf("%g", 1e6 * pi) # -> 指数sprintf("%.9g", 1e6 * pi) # -> "固定"sprintf("%G", 1e-6 * pi)

## 切り詰め無し:sprintf("%1.f", 101)

## 一つの引数を再利用,%x と %X の差を示すxx <- sprintf("%1$d %1$x %1$X", 0:15)xx <- matrix(xx, dimnames = list(rep("", 16), "%d%x%X"))noquote(format(xx, justify = "right"))

## より洗練されたもの:

sprintf("min 10-char string '%10s'",c("a", "ABC", "and an even longer one"))

## qdapTools 1.0.0 からのプラットフォーム依存の悪い例:## 空白やゼロで埋められるかもしれないsprintf("%09s", month.name)

n <- 1:18sprintf(paste0("e with %2d digits = %.", n, "g"), n, exp(1))

## 引数を秩序無しに使うsprintf("second %2$1.0f, first %1$5.2f, third %3$1.0f", pi, 2, 3)

## 幅や精度に対しアステリスクを使うsprintf("precision %.*f, width '%*.3f'", 3, pi, 8, pi)

## アステリスクと引数の再利用,'e' example reiterated:

Page 506: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

506 sQuote

sprintf("e with %1$2d digits = %2$.*1$g", n, exp(1))

## リサイクル引数sprintf("%s %d", "test", 1:3)

## 丸め/表現エラーを示すバイナリ出力x <- seq(0, 1.0, 0.1); y <- c(0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1)cbind(x, sprintf("%a", x), sprintf("%a", y))

sQuote Quote Text

Description

適当な一重または二重の左右の引用符を結合してテキストを一重または二重引用化する.

Usage

sQuote(x)dQuote(x)

Arguments

x Rオブジェクト,文字列に変換される.

Details

この関数の目的は Rの出力,例えば警告やエラー,中で使われるテキストの引用化に対するマークアップの簡単な方法を提供することである.

適切な引用符の選択はロケールと利用できる文字セットに依存する.かっての Unix/X11フォントはそれらが開き・閉じ一重引用符としても使えるようにグレーブアクセント(ASCIIコード 0x60)とアポストロフィ (0x27)を表示した.現代のフォントの使用,又は非 Unixシステム上では,これらの文字は最早マッチするグリフを与えない.Unicodeは左右の一重引用符文字(U+2018と U+2019)を提供する;もし Unicodeマークアップが利用できないと仮定するならば,アポストロフィを方向のない一重引用符として使うのは良い手段と思われる.

同様に Unicodeは左右の二重引用符文字(U+201Cと U+201D)を持つ;もしアスキーのタイプライタ特性を用いることが出来るならば,アスキーの引用符(0x22)を左右双方の二重引用符として使うべきである.

幾つかの他のロケール,特にWindowsで,はまた向き付きの引用符をもつ. TeXは向き付きの一重引用符としてグレーブとアポストロフィを,二重のグレーブとアポストロフィ引用符を向き付きの二重引用符として使う.

どのような表現が使われるかは useFancyQuotesの optionsの設定に依存する.もしこれが FALSEならば方向無しのアスキー引用スタイルが使われる.もしこれが TRUE (既定)ならば Unicode の向き付き引用化が利用できれば使われる (現在 Unix 風システム上ではUTF-8ロケール,そして Cを除く全てのWindowsロケール):もし "UTF-8"と設定するとUTF-8マークアップが使われる(現在のロケールが何であろうと).もし "TeX"と設定すると TeXスタイルのマークアップが使われる.最後に,もしこれを長さ4の文字列ベクトルに設定すると,最初の二つの項目が開始と終了の一重引用符として使われ,二番目

Page 507: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

srcfile 507

の二つは開始と終了の二重引用符として使われる:これはギルメットの使用のような非英語の引用化慣習を移植するために使うことが出来る.

装飾的な引用化が使われると,全てのフォントが必要なグリフを含むわけでは無いので,それらは正しく表現されないかもしれないことを留意すべきである.

Value

現在のロケールのエンコーディングでの x と同じ長さの (強制変換後の)文字列ベクトル.

References

Markus Kuhn, “ASCII and Unicode quotation marks”. https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html

See Also

Rコードの引用化には Quotes.

OS命令を引用化するには shQuote.

Examples

op <- options("useFancyQuotes")paste("argument", sQuote("x"), "must be non-zero")options(useFancyQuotes = FALSE)cat("\ndistinguish plain", sQuote("single"), "and",

dQuote("double"), "quotes\n")options(useFancyQuotes = TRUE)cat("\ndistinguish fancy", sQuote("single"), "and",

dQuote("double"), "quotes\n")options(useFancyQuotes = "TeX")cat("\ndistinguish TeX", sQuote("single"), "and",

dQuote("double"), "quotes\n")if(l10n_info()$`Latin-1`) {

options(useFancyQuotes = c("\xab", "\xbb", "\xbf", "?"))cat("\n", sQuote("guillemet"), "and",

dQuote("Spanish question"), "styles\n")} else if(l10n_info()$`UTF-8`) {

options(useFancyQuotes = c("\xc2\xab", "\xc2\xbb", "\xc2\xbf", "?"))cat("\n", sQuote("guillemet"), "and",

dQuote("Spanish question"), "styles\n")}options(op)

srcfile References to source files

Description

これらの関数はソースファイルを操作する.

Page 508: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

508 srcfile

Usage

srcfile(filename, encoding = getOption("encoding"), Enc = "unknown")srcfilecopy(filename, lines, timestamp = Sys.time(), isFile = FALSE)srcfilealias(filename, srcfile)getSrcLines(srcfile, first, last)srcref(srcfile, lloc)## S3 method for class 'srcfile'print(x, ...)## S3 method for class 'srcfile'summary(object, ...)## S3 method for class 'srcfile'open(con, line, ...)## S3 method for class 'srcfile'close(con, ...)## S3 method for class 'srcref'print(x, useSource = TRUE, ...)## S3 method for class 'srcref'summary(object, useSource = FALSE, ...)## S3 method for class 'srcref'as.character(x, useSource = TRUE, to = x, ...).isOpen(srcfile)

Arguments

filename ファイル名.

encoding ファイルに仮定される文字列エンコーディング.

Enc 文字列をそれで作るエンコーディング: parseへの encoding引数を見よ.

lines ソース行の文字列ベクトル.他の Rオブジェクトは文字列に変換される.

timestamp ファイルのコピーに対して使われるタイムスタンプ.

isFile この srcfilecopyはファイルシステムのファイル由来か?

srcfile srcfileオブジェクト.

first, last, line

行数.

lloc ソースの位置を与える 4,6又は 8個の値のベクトル; ‘詳細’を見よ.

x, object, con 適当なクラスのオブジェクト.

useSource srcrefのテキストを得るのに srcfileを読み込むか.

to 文字列範囲の終わりをマークするオプションの二番目の srcrefオブジェクト.

... メソッドへの追加引数;無視される.

Details

これらの関数とクラスはソースコードの参照を処理する.

srcfile関数はクラス srcfileのオブジェクトを作る.これはソースコードファイルのタイムスタンプとともに名前とディレクトリを含み,ソースレベルのデバッグ(まだ実装されていない)とソースのエンコーディングに使われる.ファイルのエンコーディングは

Page 509: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

srcfile 509

保存される;エンコーディングの説明は file,そして自分のプラットフォームで利用可能なエンコーディングについては iconvlistを見よ.

srcfilecopy関数は子孫クラス srcfilecopyのオブジェクトを作る,これは文字列ベクトルにソース行を保存する.これは isFile引数の値をコピーし,デバッガがこのテキストがファイルシステム中の実ファイルから来たものかどうかを特定するのを助ける.

srcfilealias関数は子孫クラス srcfilealiasのオブジェクトを作る.これは別のソースファイルへの別称を与える.これは #lineダイレクティブが使われた時構文解析器が生成する.

getSrcLines関数は srcfileから指定された行を読み取る.

srcref関数はクラス srcrefのオブジェクトを作る.これは srcfile中の文字の範囲を説明する.

値 llocは次の値を与える:

c(first_line, first_byte, last_line, last_byte, first_column,last_column, first_parsed, last_parsed)

バイト(要素 2, 4)と列(要素 5, 6)は多バイト文字のせいで異なるかもしれない.もし四つの値だけが与えられると,列とバイトはマッチすると仮定される.行(要素 1, 3)と構文解析された行(要素 7, 8)は #lineダイレクティブがコード中で使われていると異なるかもしれない:前者はダイレクティブを尊重し,後者は単に行を数える.もし要素 4か 6が与えられると,構文解析された行はその行にマッチすると仮定される.

クラス srcfileと srcfilecopyに対して print, summary, openそして closeに対するメソッドが定義されている. openメソッドはその内部的なファイルコネクションを特定の行で開く;もしそれが既に開かれていれば,それはその行に再位置指定される.

クラス srcref に対するメソッドが print, summary そして as.character に対して定義されている. as.character メソッドは参照に対応するテキストを得るために関連ソースファイルを読み取る.もし to 引数が与えられると,それは同じファイル中の最初に続く二番目の srcref で無ければならない;これらは全ての範囲への一つの参照として扱われる.正確な挙動はソースファイルのクラスに依存する.もしソースファイルはクラス srcfilecopy を継承し,行は保存されたコピーから “構文解析された”行カウントを使って取られる.さもなければ,ファイルの読み取りが試みられ,srcref 記録(つまり,要素 1 と3)のオリジナルの行番号が使われる.もしエラーが起これば (例えば,ファイルがもう存在しない),最初と最後の line:column範囲を指示する<srcref: "file" chars 1:1 to 2:10>のようなテキストが代わりに返される.summaryメソッドの既定はこのタイプの表示である.

srcrefオブジェクトのリストを属性 "srcref"として表現式に付け加えることが出来る.(srcrefオブジェクトのリストは表現式と同じ長さでなければならない.)既定では,表現式は関連する srcrefを使って print.defaultによりプリントされる.代わりに逆構文解析されたコードを蜜には,printを引数 useSource = FALSEで呼び出す.もし srcrefオブジェクトが useSource = FALSEと共にプリントされると,記録 <srcref: ...>がプリントされる.

.isOpenは内部的使用を意図している:これは srcfileに関連したコネクションが開いているかどうかをチェックする.

Value

srcfileは srcfileオブジェクトを返す.

srcfilecopyは srcfilecopyオブジェクトを返す.

getSrcLinesはソースコードの行の文字列ベクトルを返す.

srcrefは srcrefオブジェクトを返す.

Page 510: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

510 startsWith

Author(s)

Duncan Murdoch

See Also

ソース参照からの情報を取り出すには getSrcFilename.

Examples

# タイムスタンプを持つsrc <- srcfile(system.file("DESCRIPTION", package = "base"))summary(src)getSrcLines(src, 1, 4)ref <- srcref(src, c(1, 1, 2, 1000))refprint(ref, useSource = FALSE)

startsWith Does String Start or End With Another String?

Description

Determines if entries of x start or end with string (entries of) prefix or suffix respectively, wherestrings are recycled to common lengths.

startsWith() is equivalent to but much faster than

substring(x, 1, nchar(prefix)) == prefix

or also

grepl("^<prefix>", x)

where prefix is not to contain special regular expression characters.

Usage

startsWith(x, prefix)endsWith(x, suffix)

Arguments

x vector of character string whose “starts” are considered.

prefix, suffix character vector (often of length one).

Details

The code has an optimized branch for the most common usage in which prefix or suffix is oflength one, and is further optimized in a UTF-8 or 8-byte locale if that is an ASCII string.

Page 511: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Startup 511

Value

A logical vector, of “common length” of x and prefix (or suffix), i.e., of the longer of the twolengths unless one of them is zero when the result is also of zero length. A shorter input is recycledto the output length.

See Also

grepl, substring; the partial string matching functions charmatch and pmatch solve a differenttask.

Examples

startsWith(search(), "package:") # typically at least two FALSE, nowadays often three

x1 <- c("Foobar", "bla bla", "something", "another", "blu", "brown","blau blüht der Enzian")# non-ASCII

x2 <- cbind(startsWith(x1, "b"),startsWith(x1, "bl"),startsWith(x1, "bla"),

endsWith(x1, "n"),endsWith(x1, "an"))

rownames(x2) <- x1; colnames(x2) <- c("b", "b1", "bla", "n", "an")x2

Startup Initialization at Start of an R Session

Description

Rにおける起動のメカニズムは次のようになる.

‘--no-environ’がコマンドラインで与えられていない限り, Rは環境変数を設定するサイトとユーザのファイルを探す.サイトファイルの名前は環境変数 R_ENVIRONが指し示すものである.もしこれが設定されていないと, ‘R_HOME/etc/Renviron.site’が使われる(もしそれが存在すれば.‘factory-fresh’インストールでは存在しない).ユーザファイルの名前は環境変数 R_ENVIRON_USERによって指定できる.もしこれが未設定なら,探されるファイルは現在のディレクトリかホームディレクトリの ‘.Renviron’である.ファイルがどのように読まれるかは ‘詳細’を見よ.

それから,コマンドラインのオプション ‘--no-site-file’が与えられていない限り, Rはサイト全般の Rコードの起動プロファイルファイルを探す.このファイルのパスは環境変数 R_PROFILEの値から取られる (tilde expansionを行った後に). もしこの変数が未設定なら,既定値は ‘R_HOME/etc/Rprofile.site’ で,もしそれが存在すれば使われる.(Unix風システムではこれは ‘factory-fresh’インストールでは存在しない.Windowsでは‘factory-fresh’インストールではインストーラによる設定が含まれる).

このコードは baseパッケージ中に読み込まれる.ユーザは base中のオブジェクトをうかつに上書きしないように注意する必要がある.そしてもしコードが実行される必要があるのならば, localを使うことが勧められる.以下の例を見よ.

そして,‘--no-init-file’が与えられない限り Rは Rコードのファイルであるユーザプロファイルを探す.このファイルのパスは環境変数 R_PROFILE_USERで与えられる(そして tilde expansionが実行される).もしこれが未設定なら,ファイル ‘.Rprofile’が現在の

Page 512: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

512 Startup

ディレクトリかユーザのホームディレクトリで探される(この順序で).ユーザのプロファイルファイルは作業空間に読み込まれ実行される.

サイトとユーザのプロファイルファイルが読み込み実行されるときは baseパッケージだけが読み込まれていることを注意しよう.従って他のパッケージのオブジェクトは例えばutils::dump.framesのようにか,関連するパッケージをはっきり読み込んでから参照する必要がある.

Rはそれから,もしあればユーザの作業空間のイメージをファイル ‘.RData’から現在のディレクトリに読み込む( ‘--no-restore-data’か ‘--no-restore’がコマンドラインで指定されない限り).

次に,もし関数 .Firstが検索パス上に見つかれば,それが .First()として実行される.最後にパッケージ base中の .First.sys()が実行される.これは options("defaultPackages")で指定される既定パッケージを付加するため requireを実行する.もし methodsパッケージが含まれれば,これは先に付加される (関数 .OptRequireMethods()により)ので,ユーザの作業空間からのそれらの名前空間の初期化は正しく進行する.

関数 .First (そして .Last) は適当なファイル ‘.Rprofile’ や ‘Rprofile.site’ もしくは‘.RData’に保存されている.起動時に既定とは異なるパッケージのセットが必要なら,‘.Rprofile’や ‘Rprofile.site’中に呼び出し optionsを挿入する.例えばoptions(defaultPackages = character()) は起動時に追加のパッケージ一切付加しない(baseパッケージだけ) (もしくは Rを開始する前に環境変数 R_DEFAULT_PACKAGES=NULLを設定する).options(defaultPackages = "")または R_DEFAULT_PACKAGES=""は Rのシステム既定値を矯正する.

‘--no-restore-history’ か ‘--no-restore’ 指定されていない限り,フロントエンドがサポートするならば,命令履歴が環境変数 R_HISTFILE (既定は現在のディレクトリの‘.Rhistory’が指定するファイルから読み込まれる.

コマンドラインのオプション ‘--vanilla’は ‘--no-site-file’, ‘--no-init-file’,‘--no-environ’そして(R CMDを除き) ‘--no-restore’を意味する.

Windowsの場合,これはまた ‘--no-Rconsole’を意味し,ファイル ‘Rconsole’の読み込みを阻止する.

Details

開始時に使われる二種類のファイルがあることを注意しよう:設定される環境変数をのリストを含む環境ファイルと Rコードを含むプロファイルファイルである.

サイトもしくはユーザの環境ファイル中の行は #で始まるコメント行であるか name=valueの形の行である.後者は環境変数 name を value に設定し,既存の値を書き換える.もし value が ${foo-bar}の形の表現式を含めば,値はもしそれが存在すれば環境変数 fooさもなければ foo のそれであり空でない値に設定される. (もしそれが ${foo} の形ならば既定値は "" である.) この構成は入れ子にできるので,bar は同じ形式に出来る(${foo-${bar-blah}} のように).波括弧が本質的であることを注意する:例えば $HOMEは解釈されない.

value 中の語頭と語尾の空白は剥ぎ取られる. value がそれから Unixシェルに類似した方法で処理される.特に,最も外側の(一重もしくは二重)引用化はむき出しにされ,バックスラッシュは内側の引用化を除き取り除かれる.

サブアーキテクチャを持つシステム(主にWindows)上では,ファイル ‘Renviron.site’と‘Rprofile.site’はアーキテクチャ固有のディレクトリで先ず探される,例えば‘R_HOME/etc/i386/Renviron.site’は ‘.Renviron’より優先して使われる.

Page 513: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Startup 513

Note

開始時コード中にユーザと対話があるとは考えられていない.もしそうすれば Rプロセスをクラッシュさせる可能性がある.これは特に R 3.0.2以前に該当する.

Rの Unix版ではまた起動処理中非常に早い時期に読み込まれるファイル‘R_HOME/etc/Renviron’がある.これは Rのコンフィギュア過程で設定される環境変数を含む.このファイル中の値はサイトやユーザの環境ファイルによって上書きすることが出来る: ‘R_HOME/etc/Renviron’自体を変更しないようにしよう.これは‘R_HOME/etc/Renviron.site’とは異なる.

コマンドラインのオプションは別のフロントエンドでは適用できないかもしれない: OSXの R.appには適用されない.

Windowsでは起動時オプションは Rgui, Rtermそして R用であり,Rcmd用ではない:例えば後者で ‘--vanilla’を使うと警告かエラーになる.

RのUnix版では起動時の非常に早い時期によみこまれるファイル ‘R_HOME/etc/Renviron’がある.これはコンフィギュアの過程で Rにより設定される環境変数を含み,Windows版の Rでは使われない.

R CMD check と R CMD build は常に標準のスタートアップファイルを読み込むわけではないが,常に個別の ‘Renviron’ ファイルを読み込む.これらの位置は環境変数 R_CHECK_ENVIRON と R_BUILD_ENVIRON で指定できる.もしこれらが設定されていると,その値は ‘Renviron’ ファイルのパスとして使われる;さもなければファイル‘~/.R/check.Renviron’か‘~/.R/build.Renviron’rもしくはサブアーキテクチャ固有のバージョンが用いられる.

もしRの子プロセスに ‘~/.Renviron’や ‘~/.Rprofile’を無視して欲しければ(R CMD checkや R CMD buildを実行する場合など),適当な環境変数 R_ENVIRON_USERや R_PROFILE_USERを ""や存在しないファイルへ設定する (もし可能なら,Windowsでは不可能).

See Also

Windowsにおける‘ホーム’ディレクトリの定義は ‘rw-FAQ’ Q2.14を見よ.これは実行中のRから Sys.getenv("R_USER")で分かる.

Rセッションの終了時の最後の動作については .Lastを見よ.コマンドラインの引数にアクセスするには commandArgsを参照.

グラフィックスデバイスに対する既定値を設定するのに開始ファイルを使う例は,Windowsなら windows.options, Unixならば X11と quartzのヘルプファイルにある.

より多くのコマンドラインオプションについては An Introduction to R:メモリ管理に関係するものはMemoryに対するヘルプファイルにある.

‘.Renviron’ファイルを読み込むには readRenviron.

プロファイリングのコードについては Rprofを見よ.

Examples

## Not run:## Unix での ~/.Renviron の例R_LIBS=~/R/libraryPAGER=/usr/local/bin/less

## Windows での .Renviron の例R_LIBS=C:/R/libraryMY_TCLTK="c:/Program Files/Tcl/bin"

## R_DEFAULT_PACKAGES の設定の例(R CMD check から)

Page 514: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

514 stop

R_DEFAULT_PACKAGES='utils,grDevices,graphics,stats'# これはパッケージを与えられた順序で読み込み,従って# それらは検索パスに逆順に現れる.

## .Rprofile の例options(width=65, digits=5)options(show.signif.stars=FALSE)setHook(packageEvent("grDevices", "onLoad"),

function(...) grDevices::ps.options(horizontal=FALSE))set.seed(1234).First <- function() cat("\n Welcome to R!\n\n").Last <- function() cat("\n Goodbye!\n\n")

## Rprofile.site の例local({# MASS を既定パッケージに加え,CRAN ミラーを設定old <- getOption("defaultPackages"); r <- getOption("repos")r["CRAN"] <- "http://my.local.cran"options(defaultPackages = c(old, "MASS"), repos = r)

## (Unix 端末ユーザに対して) もし既設定なら COLUMNS から幅を設定cols <- Sys.getenv("COLUMNS")if(nzchar(cols)) options(width = as.integer(cols))

# 対話的なセッションでおみくじを受け取る(fortunes パッケージが必要)if (interactive())fortunes::fortune()})

## もし .Renviron が以下を含めばFOOBAR="coo\bar"doh\ex"abc\"def'"## 次のようになる# > cat(Sys.getenv("FOOBAR"), "\n")# coo\bardoh\exabc"def'

## End(Not run)

stop Stop Function Execution

Description

stopは現在の表現式の実行を停止しエラー動作を実行する.

geterrmessageは最後のエラーメッセージを与える.

Usage

stop(..., call. = TRUE, domain = NULL)geterrmessage()

Arguments

... ゼロもしくはそれ以上の文字列に変換可能なオブジェク (それらは分離記号なしに一緒に連結される)又は一つの条件オブジェクト.

Page 515: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

stop 515

call. 論理値,呼び出しがエラーメッセージの一部になるべきかどうかを指示する.

domain gettextを見よ.もし NAならメッセージは翻訳されない.

Details

エラー動作は実行コード中で確立されたエラーハンドラーと options(error=)で設定された現在の既定のエラーハンドラーで制御される.エラーは最初 signalCondition()を使用したかのように発令される.ハンドラーが無いかもしくは全てのハンドラーが復帰すればエラーメッセージがプリントされ (もし options("show.error.messages")が真なら)そして既定のハンドラーが使用される.対話的な使用時の既定の挙動 (NULLエラーハンドラー)はトップレベルのプロンプトかトップレベルのブラウザに戻り,非対話的な使用時には (実効的に) q("no", status = 1, runLast = FALSE)の呼び出しを使う.既定のハンドラーはエラーメッセージをバッファに保存する;それは geterrmessage()で呼び出すことが出来る.それはまた呼び出しスタックの記録を保存し traceback()を使って呼び出すことが出来る.

エラーは getOption("warning.length")文字に切り詰められ,既定値は 1000である.

もし条件オブジェクトが与えられるとそれはただ一つの引数でなければならず,それ以上の引数は警告と共に無視される.

Value

geterrmessageは "\n"で終わる文字列として,最後のエラーメッセージを与える.

Note

...が gettextf()からの結果を含む時には,それは既に翻訳されているので domain = NAを使う.

References

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

See Also

エラーを捉え再試行するには warning, try そしてエラーハンドラーを設定するにはoptions.正当性の検査には stopifnot.tryCatchと withCallingHandlersは表現式を実行中にカスタム化されたハンドラーを確立するために使える.

メッセージの自動翻訳のための機構については gettext.

Examples

iter <- 12try(if(iter > 10) stop("too many iterations"))

tst1 <- function(...) stop("dummy error")try(tst1(1:10, long, calling, expression))

tst2 <- function(...) stop("dummy error", call. = FALSE)try(tst2(1:10, longcalling, expression, but.not.seen.in.Error))

Page 516: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

516 stopifnot

stopifnot Ensure the Truth of R Expressions

Description

... 中の任意の表現式が全て TRUEで無ければ stopが呼び出され真でない ... の最初の要素を指示するエラーメッセージを生成する.

Usage

stopifnot(...)

Arguments

... 任意の数の論理値 R表現式で,評価結果が TRUEにならなければならない.

Details

この関数は回帰テスト中やまた関数の引数のチェックのために使われることを意図している.特にそれらを読みやすくする.

stopifnot(A, B)は概念的に次と同値である

{ if(any(is.na(A)) || !all(A)) stop(...) ;if(any(is.na(B)) || !all(B)) stop(...) }

Value

(... 中の全ての要素が TRUEならば NULL.)

See Also

stop, warning;パッケージ tools中の assertConditionは警告やエラーに対して stopifnot()を補完する.

Examples

stopifnot(1 == 1, all.equal(pi, 3.14159265), 1 < 2) # 全て TRUE

m <- matrix(c(1,3,3,1), 2, 2)stopifnot(m == t(m), diag(m) == rep(1, 2)) # all(.) |=> TRUE

op <- options(error = expression(NULL))# "stop(.) を無効にする" << 注意深く使うこと! >>

stopifnot(all.equal(pi, 3.141593), 2 < 2, all(1:10 < 12), "a" < "b")stopifnot(all.equal(pi, 3.1415927), 2 < 2, all(1:10 < 12), "a" < "b")

options(op) # 前のエラーハンドラーに戻る

Page 517: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

strptime 517

strptime Date-time Conversion Functions to and from Character

Description

文字列と,暦日と時刻を表現するクラス "POSIXlt"と "POSIXct"のオブジェクトの間の変換関数.

Usage

## S3 method for class 'POSIXct'format(x, format = "", tz = "", usetz = FALSE, ...)## S3 method for class 'POSIXlt'format(x, format = "", usetz = FALSE, ...)

## S3 method for class 'POSIXt'as.character(x, ...)

strftime(x, format = "", tz = "", usetz = FALSE, ...)strptime(x, format, tz = "")

Arguments

x 変換されるオブジェクト:strptimeに対しては文字列, strftimeに対してはクラス "POSIXlt"に変換できるオブジェクト.

tz 変換に用いられるタイムゾーンを指定する文字列.システム固有(as.POSIXltを見よ)であるが, ""は現在のタイムゾーンで,"GMT"は UTC.不正な値は最も普通に UTCとして扱われ,ある種のプラットフォームでは警告が出る.

format 文字列.formatメソッドに対する既定値はもしある要素が真夜中でない成分を持てば "%Y-%m-%d %H:%M:%S"で,さもなければ "%Y-%m-%d"である.もし options("digits.secs")が設定されていれば,最大指定された桁数まで秒がプリントされる.

... 他のメソッドへ・から渡される追加引数.

usetz 論理値.タイムゾーンの短縮形を出力に加えるか?これは時間のプリントに使われ,"%Z"を使うよりも信頼できる.

Details

formatと as.characterメソッド,そして strftimeはクラス "POSIXlt"と "POSIXct"のオブジェクトを文字列に変換する.

strptimeは文字列をクラス "POSIXlt"に変換する:その入力 xは最初 as.characterによって変換される.各入力文字列は指定された書式に対して必要な限り処理される:任意の末尾の文字は無視される.

strftime は format.POSIXlt に対するラッパであり,これと format.POSIXct は最初as.POSIXltを呼び出してクラス "POSIXlt"に変換される (従ってそれらはクラス "Date"に対しても動作する).この変換だけがタイムゾーンに依存することを注意する.

通常のベクトルのリサイクル規則が xと formatに適用されるので,回答はこれらのベクトルの最大のものの長さになる.

Page 518: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

518 strptime

ロケール固有の文字列への・からの変換が適当で利用可能なら使われる.これは日と月の名前,(もし使われていれば) AM/PMの指示,そして %xや %Xのような書式中の分離子に, LC_TIME のロケールカテゴリの設定により影響する.述べられた‘現在のロケール’とは Rセッションの開始時に使われているものかこれらの関数が最初に使われた時のものである.

書式の詳細はプラットフォーム固有であるが,以下は広く使われている可能性が高い:殆どは POSIX標準で定義されている.変換指定は %によって導入され,普通文字一つかOか Eが続き,それから文字一つが続く.変換指定の一部分でない書式中の任意の文字は文字通り (そして %%は %を与える)解釈される.広く実装されている変換指定は次を含む

%a このプラットフォームの現在のロケール中の曜日名の短縮形.(入力では完全な名前ともマッチする:ある種のロケールでは名前の短縮形はない.)

%A 現在のロケール中の完全な曜日名. (入力では省略形ともマッチする.)

%b このプラットフォームの現在のロケール中の月名の短縮形.(入力では完全な名前ともマッチする:ある種のロケールでは名前の短縮形はない.)

%B 現在のロケール中の完全な月名. (入力では省略形ともマッチする.)

%c 日付と時刻.出力ではロケール固有で,入力では "%a %b %e %H:%M:%S %Y".

%C 世紀 (00–99): 年度を100で割った整数部分.

%d 10進数(01–31)としての月の日にち.

%D %m/%d/%yの様な日付書式:C99標準はこれは正確な書式であるべきと主張する(が全ての OSが従っているわけではない).

%e 10進数(01–31)としての月の日にちで,数字が一つなら先頭に空白を持つ.

%F %Y-%m-%dに等しい(ISO 8601日付書式).

%g 一年を週数で計った最後の二つの数字 (%Vを見よ).(入力では受け入れられるが無視される.)

%G 10進数としての一年を週数で計った数字 (%Vを見よ).(入力では受け入れられるが無視される.)

%h %bと同値.

%H 10進数としての時間(00–23).ISO 8601が認めているため,特別な例外である ‘24:00:00’の様な文字列は入力では受け入れられる.

%I 10進数としての時間(01–12).

%j 10進数としての一年の日(001–366).

%m 10進数としての月(01–12).

%M 10進数としての分(00–59).

%n 出力では新行,入力では任意の空白.

%p ロケールでの AM/PM指示.%Iと一緒そして %H無しで使われる.ある種のロケールでは空文字列(もしそうしたロケール中の入力として使われると挙動は未定義である).ある種のプラットフォームは出力に対して %Pを受け入れ,小文字を使う:他は Pを出力する.

%r 12時間制の時刻(ロケールの AM や PM を使う).ある種のロケールでだけ定義される.

%R %H:%Mと同値.

%S 整数としての秒数(00–61),最大二つの閏秒を受け入れる (しかし POSIX準拠の実装は閏秒を無視する).

Page 519: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

strptime 519

%t 出力ではタブ,入力では任意の空白.

%T %H:%M:%Sと同値.

%u 10進数としての曜日(1–7,月曜日は 1).

%U 10進数としての一年の週(00–53)で日曜日が週の第1日(そして典型的には一年の最初の日曜日が第1週の第1日).USの慣例.

%V ISO 8601で定義されたような10進数としての一年の週(01–53).もし新年に1月1日を含む週(月曜日に始まる)が4日以上あれば,それが週1と考えられる.さもなければ,それは前年の最後の週であり,次の週が種1である. (受け入れられるが入力では無視される.)

%w 10進数としての曜日(0–6,日曜日が 0).

%W 10進数としての年の週(00–53)で月曜日を週の最初の日とする(そして典型的に一年の最初の月曜日を週1とする). UKの慣習.

%x 日付.出力ではロケール固有,入力では "%y/%m/%d".

%X 時刻.出力ではロケール固有,入力では "%H:%M:%S".

%y 西暦を除いた年(00–99).入力では値 00から 68は先頭に 20が 69から 99は 19が付く–これは behaviour specified by the 2004年と2008年の POSIX表現で指定された挙動であるが,それはまた ‘将来のバージョンでは二桁の年から推測された既定の世紀は変更されるであろう’と主張している.

%Y 世紀付きの年.元々のグレゴリオ暦ではゼロが無いにもかかわらず,ISO 8601:2004はそれが正当であると定義する (1BC と解釈される):https://en.wikipedia.org/wiki/0_(year)を見よ.この標準はまたカレンダー中の 1582年以前の年は関係者の合意の下でのみ使われるべきであると主張する.

入力に対しては年 0:9999だけが受け入れられる.

%z UTCからの時間と分の符号付きオフセットで,従って -0800は UTCの8時間前になる.最大 +1400までの値が R 3.1.1以来受け入れられる:それよりも前のバージョンは最大 +1200までを受け入れた. (出力対してだけの標準.)

%Z (出力のみ.)文字列としてのタイムゾーンの省略形 (もし利用できなければ空).これはタイムゾーンが年と共に変わっている場合は信頼できないかもしれない.

先頭のゼロが現れるところは出力では示されるが入力ではオプションである.名前は文字の大小を蟲師てマッチされる:それらが出力で大文字になるかどうかはプラットフォームとロケールに依存する.短縮名はプラットフォーム依存であることを注意する (標準は ‘C’ロケールではそれらは大文字化された英語名の最初の三つの文字と指定している:この慣習は英語圏のロケールでは広く使われているが,例えばフランスの月名の省略は Linux, OS X, SolarisそしてWindowsのどの二つをとっても同じではない).短縮形が何なのかを知っていることはもし %a, %bまたは %hを入力書式の一部として使いたければ本質的である:どのようにチェックするかは例を見よ.

付値されたタイムゾーンを持つオブジェクトとともに %zか %Zが出力に対して使われるとそのタイムゾーンに対する値を使おうと試みられる—しかし成功するとは限らない.

標準ではなくあまり広くは実装されていないものは

%k 一つだけの数字は前に空白をつけた 24時間の時刻.

%l 一つだけの数字は前に空白をつけた 12時間の時刻.

%s (出力のみ.)出来事からの秒数.

%+ (出力のみ.) %cに似るがしばしば "%a %b %e %H:%M:%S %Z %Y".ロケールに依存するかもしれない.

Page 520: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

520 strptime

出力に対してはまた %O[dHImMUVwWy]があり数を別種のロケール依存の書式(例えば,ローマ数字)で発生し,%E[cCyYxX]は別種の ‘紀元’(例えば,異なった宗教カレンダー)を使うことが出来る.これらは入力に対しては受け入れられるが標準的に解釈される.

Rに固有なものは %OSnであり,出力に対しては 0 <= n <= 6桁で切り詰められた秒を与える (そしてもし %OSに数字が続かなければ設定 getOption("digits.secs")を使う,もしくはそれが未設定なら n = 3).更に strptimeに対しては %OSは小数秒を含む秒を入力する. %Sは出力では小数部を読み取らない.

他の変換指定(そして %で始まる他の文字列が変換指定だとしても)はシステム固有である.ある種のシステムは format中の多バイト文字の使用はサポートされていないと解説されている: UTF-8ロケールは問題が起きる可能性は少ない.

Value

format メソッドと strftime は時間を表現する文字列ベクトルを返す.時間の NA はNA_character_として返される.要素は 256バイトに制限され,もし usetzが真ならタイムゾーンの省略形が加わる.(既知のプラットフォームでは長すぎる文字列は 255 か256バイトに切り詰められるが,これは C99標準では保証されない.)

strptimeは文字列表現をクラス class "POSIXlt"のオブジェクトに変換する.タイムゾーンは isdst成分と,もし tz != ""ならば "tzone"属性を設定するのに使われる.もし指定された時間が不正確なら(例えば ‘"2010-02-30 08:00"’)結果の全ての成分は NAになる. (NB:これはそれが主張することを正確に意味している –単にあるタイムゾーンで存在しない時間というだけでなく,もしそれが不正確な時間なら.)

年のプリント

誰もが 1000から 9999までの年は4桁でプリントされるべきことは同意するが,標準はこの範囲外ではどうするかは定義していいない. 0から 999までの年では殆どの OSはゼロや空白で埋めて4桁にするが, Linuxは単にその数を出力する.

OSの機能は恐らく 1 CE (又は 1 AD)を‘正確に’プリントしない (それらは年 0の存在を仮定していない: https://en.wikipedia.org/wiki/0_(year)を見よ.そしてある種の OSはそれらを全く間違って受け取る).普通の書式は -45と -045である.

9999後と -999以前は普通5桁かそれ以上の文字でプリントする.

ある種のプラットフォームは POSIX 2008 (そしてその他)からの修正をサポートする.Linuxの書式 "%04Y"は最低4文字とゼロによる補填を保証する.内部コード(Windowsで使用され OS Xでは既定)は既定でゼロ補填を行い,書式 %_4Yと %_Yは空白による補填と,補填をしないために使える.

タイムゾーンオフセット

GMT (UTCとしても知られている)はタイムゾーンとクラス "POSIXct"へ・からの変換の一部であるが,しばしば不正確に計算されるので困難を招く.

これらは慣例としてタイムゾーン指定からの逆の符号を持つ (Sys.timezoneを見よ):正の値は子午線の東部である.00:09:21 (1900のパリ)や 00:44:30 (1972までのリベリア)のようなオフセットを持つタイムゾーンが存在したが,オフセットは普通全部の分数として扱われ,そして最も普通には RFC 822電子メイルヘッダー中の -0800の様な形式でみられる(たとえば,冬季の USの太平洋岸).

書式 %zは入力と出力に対して使うことが出来る:これは文字列で,慣例的にプラスかマイナスに時間に対する二つの数字と分に対する二つの数字が続く:標準はオフセットが未知なら空文字列が出力されるべきと述べるが,ある種のシステムは現在の年に対して使われているタイムゾーンに対するオフセットを使う.

Page 521: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

strptime 521

Note

既定の書式は ISO 8601国際標準に従い,日を "2001-02-28",時刻を "14:01:02"のように先頭のゼロを使って表す. (ISO書式は日付と時刻を分離する空白を使わないが Rは既定でそうする.)

strptimeに対しては入力文字列は日付を完全に指定する必要はない:未指定の秒,分,時間はゼロと仮定され,月や日は現在のものである. (しかしながらもし月が指定されると,現在の月のその日は指定された月に対しては不正かもしれないので,その月の日を%dや %eを使って指定する必要がある.)ある成分は NAとして返されるかもしれない (しかし未知の tzone成分は空の文字列で表現される).

もし指定されたタイムゾーンが自分のシステムで不正なら,何が起きるかはシステム依存であるが恐らく無視される.

‘daylight saving’ (又はサマー)タイムへ・からの推移のせいで,殆どのタイムゾーンではある時刻は起きず,ある時刻は二回起きることを注意しよう.strptimeはそうした時刻を検証しない (それは特定のタイムゾーンを仮定しない)が, as.POSIXctによる変換はする. strftimeによる変換と整形/プリントは OS機能を使っており, DSTの推移時に存在しない時間に対しては無意味な結果を返すかもしれない.

R 3.1.0以前のWindowsでははるかに不完全な出力指定がサポートされていた.

Cロケールでは %cは "%a %b %e %H:%M:%S %Y"である必要がある.Windowsはそれを守らない(そして北アメリカ以外では理解できない書式を使う).その書式がWindows版のRでは全てのロケールで使われる.

入力では %A %a %B %bは完全名と短縮名の双方がマッチするという事実は R 3.0.3以前ではある種のロケール中で問題を起こす:例えばフランスの OS Xでは ‘juillet’は6月に対する短縮形である juiとマッチしてしまう.

References

International Organization for Standardization (2004, 2000, . . . ) ISO 8601. Data elements andinterchange formats – Information interchange – Representation of dates and times. (執筆時に)オンラインで利用できるバージョンのリンクは http://dotat.at/tmp/ISO_8601-2004_E.pdf と http://www.qsl.net/g1smd/isopdf.htm を見よ;現在の公式バージョンに関する情報は http://www.iso.org/iso/iso8601である.

POSIX 1003.1標準,これは幾つかの点で ISO 8601より厳格である.

See Also

日付・時刻クラスの詳細は DateTimeClasses;ロケールの確認と設定は locales.

書式をどのように設定するかは自分のシステムの strftimeのヘルプページ. (Windowsを含むある種のシステムでは strftimeはより包括的な内部コードで置き換えられている.)

Examples

## date() のロケール固有バージョンformat(Sys.time(), "%a %b %d %X %Y %Z")

## 1/10 秒精度の時間(OS がサポートしていれば)format(Sys.time(), "%H:%M:%OS3")

## 書式 'ddmmmyyyy' でデータ情報を読み込む## これはある種のロケールでは NA を与える;

Page 522: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

522 strrep

## コメント行のように C ロケールを設定すればほとんどのシステムでこれを克服できる.## lct <- Sys.getlocale("LC_TIME"); Sys.setlocale("LC_TIME", "C")x <- c("1jan1960", "2jan1960", "31mar1960", "30jul1960")z <- strptime(x, "%d%b%Y")## Sys.setlocale("LC_TIME", lct)z

## 書式 'm/d/y h:m:s' で日付/時刻 情報を読み込むdates <- c("02/27/92", "02/27/92", "01/14/92", "02/28/92", "02/01/92")times <- c("23:03:20", "22:29:56", "01:03:30", "18:21:03", "16:56:26")x <- paste(dates, times)strptime(x, "%m/%d/%y %H:%M:%S")

## 小数秒の時間z <- strptime("20/2/06 11:16:16.683", "%d/%m/%y %H:%M:%OS")z # 小数秒無しでプリントop <- options(digits.secs = 3)zoptions(op)

## タイムゾーン名は可搬的でないが 'EST5EDT' はかなり近くなる.(x <- strptime(c("2006-01-08 10:07:52", "2006-08-07 19:33:02"),

"%Y-%m-%d %H:%M:%S", tz = "EST5EDT"))attr(x, "tzone")

## RFC 822 ヘッダー(DST 中の東カナダ)strptime("Tue, 23 Mar 2010 14:36:38 -0400", "%a, %d %b %Y %H:%M:%S %z")

## もし省略名を入力に使いたければ(それらは大・小文字を区別しない)## それらが何なのか正確に知っていることが必要であるformat(seq.Date(as.Date('1978-01-01'), by = 'day', len = 7), "%a")format(seq.Date(as.Date('2000-01-01'), by = 'month', len = 12), "%b")

strrep Repeat the Elements of a Character Vector

Description

Repeat the character strings in a character vector a given number of times (i.e., concatenate therespective numbers of copies of the strings).

Usage

strrep(x, times)

Arguments

x a character vector, or an object which can be coerced to a character vector usingas.character.

times an integer vector giving the (non-negative) numbers of times to repeat the re-spective elements of x.

Page 523: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

strsplit 523

Details

The elements of x and times will be recycled as necessary (if one has no elements, and emptycharacter vector is returned). Missing elements in x or times result in missing elements of thereturn value.

Value

A character vector with the elements of the given character vector repeated the given numbers oftimes.

Examples

strrep("ABC", 2)strrep(c("A", "B", "C"), 1 : 3)## Create vectors with the given numbers of spaces:strrep(" ", 1 : 5)

strsplit Split the Elements of a Character Vector

Description

文字列ベクトル xの要素を,それらの内部での部分文字列 splitへのマッチに従って,部分文字列に分割する.

Usage

strsplit(x, split, fixed = FALSE, perl = FALSE, useBytes = FALSE)

Arguments

x 文字列ベクトルで,その各要素を分割する.因子を含む他の入力はエラーを与える.

split 分割に対して使われる正規表現を含む(fixed = TRUEで無い限り)文字列(またはそうしたものへ変換できるオブジェクト).もしマッチが無ければ,特に splitが長さゼロなら,xは単一の文字に分解される.もしsplitが 1より大きな長さを持てば,それは xに沿ってリサイクルされる.

fixed 論理値.もし TRUEなら splitに正確にマッチする.さもなければ正規表現を使う.perlに優先する.

perl 論理値.Perl互換の正規表現を使うか?

useBytes 論理値.もし TRUE ならマッチングは文字毎ではなくバイト毎に行われ,マークされたエンコーディングを持つ入力は変換されない.これは "bytes" とマークされた入力が一つでも見つかれば強制される(Encodingを見よ).

Page 524: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

524 strsplit

Details

引数 splitは文字列に変換されるので,下の例のように split = NULLの使用はsplit = character(0)を意味するのが分かる,

単一の文字への分割は split = character(0)又は split = ""で行える;二つは同値である.ここでの‘文字’の定義はロケールに依存する:単バイトロケールではそれはバイトであり,多バイトロケールではそれは‘幅広文字’で表現される単位である (ほとんど常に Unicodeの code point).

splitの欠損値は xの対応要素を全く分割しない.

各入力文字列に適用されるアルゴリズムは

repeat {もし文字列が空なら

中断.もしマッチが一つあれば

マッチの左側の文字列を出力に加える.マッチとその左側の全てを削除する.

さもなければ文字列を出力に加える.中断.

}

これはもしマッチが(空でない)文字列の最初であれば出力の最初の要素は ""であるが,もし文字列の最後でマッチがあれば出力はマッチ部分を除いたものと一致することを注意する.

現在のロケールで不正な入力は最大5回まで警告される.

Value

xと同じ長さのリストで,その i番目の要素は x[i]を分割したベクトルを含む.

もし xか splitのどれかの要素が UTF-8と宣言されていれば(Encodingを見よ),結果中の全ての非アスキー文字列は UTF-8とされ,それらのエンコーディングは UTF-8と宣言される. perl = TRUE, useBytes = FALSEに対しては多バイトロケールの非アスキー文字列は UTF-8に翻訳される.

See Also

逆操作は paste.文字列の探索と処理には grepと sub;また nchar, substr.

パターンの指定の詳細については‘正規表現’.

Examples

noquote(strsplit("A text I want to display with spaces", NULL)[[1]])

x <- c(as = "asfef", qu = "qwerty", "yuiop[", "b", "stuff.blah.yech")# x を文字 e について分割strsplit(x, "e")

unlist(strsplit("a.b.c", "."))## [1] "" "" "" "" ""## 'split' は正規表現であることを注意!## もし本当に '.' に関して分割したければ次を使うunlist(strsplit("a.b.c", "[.]"))

Page 525: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

strtoi 525

## [1] "a" "b" "c"## 又はunlist(strsplit("a.b.c", ".", fixed = TRUE))

## 有用な関数:文字列に対する rev()strReverse <- function(x)

sapply(lapply(strsplit(x, NULL), rev), paste, collapse = "")strReverse(c("abc", "Statistics"))

## R の中核メンバーのファーストネームを得るa <- readLines(file.path(R.home("doc"),"AUTHORS"))[-(1:8)]a <- a[(0:2)-length(a)](a <- sub(" .*","", a))# そしてそれらを逆転するstrReverse(a)

## 最後の空文字列が生成されないことを注意:strsplit(paste(c("", "a", ""), collapse="#"), split="#")[[1]]# [1] "" "a"## そしてまた空文字列は明確なマッチの前でだけ生成されるstrsplit("", " ")[[1]] # character(0)strsplit(" ", " ")[[1]] # [1] ""

strtoi Convert Strings to Integers

Description

C関数 strtolを使い与えられた底に従い文字列を整数に変換する,又は Cの規則に従い適切な底を選ぶ.

Usage

strtoi(x, base = 0L)

Arguments

x 文字列,又は as.characterにより文字列に変換できる何か.

base 両端を含む 2と 36の間にある整数,又はゼロ(既定値).

Details

変換は Cのライブラリ関数 strtolに基づく.

既定の base = 0Lに対しては,底は xのその要素の文字列表現から選ばれので,異なった要素は異なった底を持てる (最初の例を見よ).底を選ぶ標準の C規則は8進法 (xか Xが続かない接頭辞 0)そして16進法定数 (接頭辞 0x又は 0X)は底 8そして 16と解釈される;全ての他の文字列は底 10と解釈される.

10より大きな数字に対しては,文字 aから z (又は Aから Z)は 10から 35を表す.

Value

xと同じ長さの整数ベクトル.整数と解釈出来ない値,又は桁溢れする値は NA_integer_として返される.

Page 526: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

526 strtrim

See Also

数値文字列に対しては as.integerが同様に役に立つ.

Examples

strtoi(c("0xff", "077", "123"))strtoi(c("ffff", "FFFF"), 16L)strtoi(c("177", "377"), 8L)

strtrim Trim Character Strings to Specified Display Widths

Description

文字列を指定したディスプレイ幅に切り詰める.

Usage

strtrim(x, width)

Arguments

x 文字列ベクトル,又は as.characterで文字列ベクトルに変換できるオブジェクト.

width 正整数:xの長さまでリサイクルされる.

Details

‘幅’は等幅フォントでのディスプレイ幅と解釈される.プリント不能な文字(バックスペースやタブのような)がどうなるかは実装依存であり,ロケールに依存数かもしれない(例えばそれらはカウントに入るかもしれないし除外されるかもしれない).

substr でなくこの関数を使うことは,文字列ベクトルに倍幅文字(例えば中国語/日本語/韓国語)がある場合は重要である.

Value

(可能な変換の後で) xと同じ長さと同じ属性の文字列ベクトル.

もし対応する入力が宣言されたエンコーディングを持ち,現在のロケールが Latin-1かUTF-8ならば,結果の要素は現在のロケールのそれで宣言されたエンコーディングを持つ(Encodingを見よ).

Examples

strtrim(c("abcdef", "abcdef", "abcdef"), c(1,5,10))

Page 527: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

structure 527

structure Attribute Specification

Description

structureは追加の属性のセットを持つオブジェクトを返す.

Usage

structure(.Data, ...)

Arguments

.Data 様々な属性が付加されたオブジェクト.

... 属性.形式 tag = valueで指定されデータに付加される.

Details

クラス "factor"の付加は数値コードが整数保管モードを与えられることを保証する.

歴史的な理由から(これらの名前は逆構文解析時に使われる),属性 ".Dim", ".Dimnames",".Names", ".Tsp"そして ".Label"は "dim", "dimnames", "names", "tsp"そして "levels"に改名される.

同じタグを複数回与えることが可能で,その時は最後に付加された最後の値が使われる.属性の他の付加方法と同様に, tag = NULLを使うと,もしあれば,属性 tagを .Dataから取り除く.

References

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

See Also

attributes, attr.

Examples

structure(1:6, dim = 2:3)

Page 528: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

528 strwrap

strwrap Wrap Character Strings to Format Paragraphs

Description

入力中の各文字列は最初パラグラフ(又は空白だけの行)に分解される.パラグラフはそれから行を単語境界で分断して整形される.行のラップ対象列やパラグラフの最初とその後の全ての行は個別に制御できる.

Usage

strwrap(x, width = 0.9 * getOption("width"), indent = 0,exdent = 0, prefix = "", simplify = TRUE, initial = prefix)

Arguments

x 文字列ベクトル,又は as.characterにより文字列ベクトルに変換出来るオブジェクト.

width 出力中で行をラップする対象列を与える正整数.

inden パラグラフの最初の行のインデント量を与える非負整数.

exdent パラグラフの引き続く行のインデント量を与える非負整数.

prefix, initial

最初の行を除く各行に対して使われる接頭辞.最初の行には initialが使われる.

simplify 論理値.もし TRUEなら,結果は行テキストの単一の文字ベクトル;さもなければそれは xと同じ長さのリストで,その要素は対応する xの要素から得られた行テキスト. (従って最初のケースの結果は後者を非リスト化すれば得られる.)

Details

入力中の空白(スペース,タブ,又は新行文字)は破壊される.ピリオッドの後の二重のスペース,疑問符と感嘆符は (文章の終わりを表すものとして)保存される.現在行中断箇所での可能な文章の終わりは特別には考慮されない.

インデントは接頭辞中の文字数に関して行われる.

Value

(もし simplifyが TRUEなら)現在のロケールのエンコーディングの文字列ベクトル,又はそうした文字列ベクトルのリスト.

Examples

## ファイル 'THANKS' を読み込む.x <- paste(readLines(file.path(R.home("doc"), "THANKS")), collapse = "\n")## パラグラフに分解し最初の三つを除くx <- unlist(strsplit(x, "\n[ \t\n]*\n"))[-(1:3)]## 残りをつなぐx <- paste(x, collapse = "\n\n")## そして幾つかの遊び:

Page 529: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

subset 529

writeLines(strwrap(x, width = 60))writeLines(strwrap(x, width = 60, indent = 5))writeLines(strwrap(x, width = 60, exdent = 5))writeLines(strwrap(x, prefix = "THANKS> "))

## メッセージは 'width' で指示される対象列でラップされる## (そしてそれを超えては行われない)ことを注意する.## R-devel の J. Hosking <[email protected]> による投稿例.x <- paste(sapply(sample(10, 100, replace = TRUE),

function(x) substring("aaaaaaaaaa", 1, x)), collapse = " ")sapply(10:40,

function(m)c(target = m, actual = max(nchar(strwrap(x, m)))))

subset Subsetting Vectors, Matrices and Data Frames

Description

条件を満たす部分集合をベクトル,行列,又はデータフレームから返す.

Usage

subset(x, ...)

## Default S3 method:subset(x, subset, ...)

## S3 method for class 'matrix'subset(x, subset, select, drop = FALSE, ...)

## S3 method for class 'data.frame'subset(x, subset, select, drop = FALSE, ...)

Arguments

x 部分操作されるオブジェクト.

subset 保存される要素や行を指示する論理値表現式;欠損値は偽とされる.

select 表現式,データフレームから選択される列を指示する.

drop [添字操作演算子に渡される.

... 他のメソッドへ・から渡される追加引数.

Details

これは総称的関数で,行列,データフレーム(リストを含む)そしてベクトルに対するメソッドを持つ.パッケージやユーザは追加のメソッドを加えることが出来る.

通常のベクトルに対しては結果は単に x[subset & !is.na(subset)]である.

データフレームに対しては subset引数は行に働く. subsetはデータフレーム中で評価されるので,列は表現式中の変数(名前を使う)として参照されることを注意する.

select引数はデータフレームと行列メソッドに対してだけ存在する.これは最初選択表現式中の列名を対応するデータフレームに置き換え,それから結果の整数ベクトルを列

Page 530: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

530 substitute

の添字として使う.これは標準の添字慣習の使用を許すので,例えば列の範囲を容易に指定したり一つの列を捨てたり出来る (例を見よ).

drop引数は行列とデータフレームに対する添字操作メソッドに渡される:行列に対する既定動作は添字操作と異なることを注意する.

因子は部分操作の後では空の水準を持つかもしれない;未使用の水準は自動的には取り除かれない.データフレームから未使用の水準を全て取り去るには droplevelsを見よ.

Value

xと類似のオブジェクトで選択された要素(ベクトルに対して),行と列(行列とデータフレームに対して)を含む,等.

警告

これは対話的に使われることを意図した利便関数である.プログラミングに対しては [のような標準の部分操作関数を使うほうが好ましく,そして特に非標準的な評価がされる引数 subsetが予見できぬ結論を招く可能性がある.

Author(s)

Peter Dalgaard and Brian Ripley

See Also

[, transform, droplevels

Examples

subset(airquality, Temp > 80, select = c(Ozone, Temp))subset(airquality, Day == 1, select = -Temp)subset(airquality, select = Ozone:Wind)

with(airquality, subset(Ozone, Temp > 80))

## 時折り論理値の 'subset' 引数の必要性は面倒であるnm <- rownames(state.x77)start_with_M <- nm %in% grep("^M", nm, value = TRUE)subset(state.x77, start_with_M, Illiteracy:Murder)# 最近のバージョンの R ではこれは単にsubset(state.x77, grepl("^M", nm), Illiteracy:Murder)

substitute Substituting and Quoting Expressions

Description

substituteは(未評価)表現式 exprに対する構文解析木を返す. env中に拘束された任意の変数が代入されている.

quoteは単にその引数を返す.引数は評価されず任意の R表現式で良い.

enquoteは Foo(....) の形式の呼び出しを呼び出し quote(Foo(....)) に変換する単純な一行ユーティリティである.これは典型的に callを早期の評価から守るために使われる.

Page 531: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

substitute 531

Usage

substitute(expr, env)quote(expr)enquote(cl)

Arguments

expr 構文的に適正な R表現式.

cl call,つまりクラス(そしてモード)が "call"である Rオブジェクト.

env 環境かリストオブジェクト.既定は現在の評価環境.

Details

substituteの典型的な用法はデータセットとプロットのために情報開示的なラベルを作ることである.下の myplot例はこの機能の簡単な用法を示す.これは関数 deparseとsubstituteを使い関数 myplotへの実際の引数の文字列バージョンであるプロット用ラベルを作る.

代入は構文解析木の各要素を調べることで次のように行われる:もし env に拘束されたシンボルでなければそのままにする.もしそれが予約オブジェクト,つまり関数への形式的引数か delayedAssign()を使って明示的に作られた,ならば,予約の表現式スロットでシンボルを置き換える.もしそれが通常の変数ならその値が代入される.例外はenvが .GlobalEnvの時で,その場合はシンボルは変更されない.

quoteと substituteは共に‘特殊’なプリミティブ関数でそれらの引数を評価しない.

Value

結果の modeは一般に "call"であるが,原理的には任意のタイプであり得る.特に変数が一つの表現式はモード "name"を持ち,定数は適当な基礎モードを持つ.

Note

substituteは純粋に辞書式の基礎の上で動作する.結果の表現式が意味を持つ保証は無い.

引数が expression(...) の時代入と引用化はしばしば混乱を招く.結果は expression構成関数への呼び出しであり,実際の表現式オブジェクトを与えるには evalで評価される必要がある.

References

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

See Also

引数 ‘missingness’については missing,部分代入については bquote,文字列に引用符を加えるには sQuoteと dQuote.

表現式や呼び出しからシンボル名を取り出すには all.names.

Page 532: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

532 substr

Examples

require(graphics)(s.e <- substitute(expression(a + b), list(a = 1))) #> expression(1 + b)(s.s <- substitute( a + b, list(a = 1))) #> 1 + bc(mode(s.e), typeof(s.e)) # "call", "language"c(mode(s.s), typeof(s.s)) # (同じ)# しかし:(e.s.e <- eval(s.e)) #> expression(1 + b)c(mode(e.s.e), typeof(e.s.e)) # "expression", "expression"

substitute(x <- x + 1, list(x = 1)) # 無意味

myplot <- function(x, y)plot(x, y, xlab = deparse(substitute(x)),

ylab = deparse(substitute(y)))

## 遅延評価の簡単な例,等:

f1 <- function(x, y = x) { x <- x + 1; y }s1 <- function(x, y = substitute(x)) { x <- x + 1; y }s2 <- function(x, y) { if(missing(y)) y <- substitute(x); x <- x + 1; y }a <- 10f1(a) # 11s1(a) # 11s2(a) # atypeof(s2(a)) # "symbol"

substr Substrings of a Character Vector

Description

文字列ベクトル中の部分文字列を取りだす,置き換える.

Usage

substr(x, start, stop)substring(text, first, last = 1000000L)substr(x, start, stop) <- valuesubstring(text, first, last = 1000000L) <- value

Arguments

x, text 文字列ベクトル.

start, first 整数.置き換えられるべき最初の要素.

stop, last 整数.置き換えられるべき最後の要素.

value 文字列ベクトル.必要ならリサイクルされる.

Page 533: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

substr 533

Details

substringは Sと互換性があるが startと stopの代わりに firstと lastになる.ベクトル引数に対しては,どれかが長さゼロで無い限り,これは引数を最長の長さまで周期的に拡大する.

取り出しの際は,もし startが文字列の長さよりも長ければ ""が返される.

取り出し関数に対しては xか textは既に文字列になっていなければ as.characterにより変換される.

置き換え関数に対しては,もし startが文字列長より大きければ置き換えはされない.もし置き換えられる部分が置き換え文字列よりも長ければ,文字列の長さ分が置き換えられる.

もしある引数が NAならば,回答の対応する要素は NAになる.

もし対応する入力が Latin-1 か UTF-8 エンコーディングで宣言され現在のロケールがLatin-1か UTF-8ならば,結果の要素は現在のロケールのエンコーディング(codeEncodingを見よ)が宣言される

もし入力要素が "bytes"エンコーディングで宣言されていれば (Encodingを見よ),部分操作は文字単位ではなくバイト単位で行われる.

Value

substrに対しては(可能な変換の後で) xと同じ長さで同じ属性の文字列ベクトル.

substringに対しては最長の引数の長さの文字列ベクトル.これは xから取られた名前を持ち (もしこれが何らかの事後の変換がされていれば必要に応じて繰り返される),そしてもしそれが最長の引数ならば他の属性が xからコピーされる.

宣言されたエンコーディング(Encodingを見よ)を持つ xの要素は同じエンコーディングで返される.

Note

substring<-の S4バージョンは lastを無視する;このバージョンはしない.

これらの関数はしばしばディスプレイを刈り詰めるために ncharと共に使われる.これは実際には上手く動作しない(文字数ではなく幅を限りたい)ので strtrimを使うほうが良いが,少なくとも既定の nchar(type = "c")を使うことを忘れない.

References

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

See Also

strsplit, paste, nchar.

Examples

substr("abcdef", 2, 4)substring("abcdef", 1:6, 1:6)## strsplit の方がより効率的 ...

substr(rep("abcdef", 4), 1:4, 4:5)x <- c("asfef", "qwerty", "yuiop[", "b", "stuff.blah.yech")substr(x, 2, 5)

Page 534: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

534 sum

substring(x, 2, 4:6)

substring(x, 2) <- c("..", "+++")x

sum Sum of Vector Elements

Description

sumはその引数中に存在する全ての値の和を返す.

Usage

sum(..., na.rm = FALSE)

Arguments

... 数値又は複素数又は論理値ベクトル.

na.rm 論理値.欠損値(NaNを含む)を除くか?

Details

これは総称的関数である:それに対するメソッドを直接に又は Summaryグループ総称経由で定義できる.これが正しく動作するためには,引数 ... は名前を持たず,選択適用は最初の引数に関して行われる.

もし na.rmが FALSEならばどれかの引数中の値 NA又は NaNは値 NAか NaNを返す.さもなければ値 NAか NaNは無視される.

論理値 TRUEは 1,FLASEは 0と見做される.歴史的な理由から NULLは integer(0)であるかのように扱われる.

異なった符号の値を加えると精度が低下する可能性がある:これはもし部分和が整数桁溢れを起こすならば十分長い整数入力に対してすら起きる可能性がある.可能ならば拡張精度の加算器が使われるが,これはプラットフォーム依存である.

Value

和.もし全ての ... が型整数か論理値ならば,和は整数で,その場合整数が桁溢れすれば結果は NAになる.さもなければそれは長さ 1の数値もしくは複素数値ベクトルになる.

NB:空集合の和は定義からゼロになる.

S4メソッド

これは S4 Summaryグループ総称関数の一部である.それに対するメソッドはシグネチャx, ..., na.rmを使う必要がある.

プロット注釈に使うためには ‘plotmath’.

References

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

Page 535: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

summary 535

See Also

行和と列和に対しては colSums.

Examples

## ベクトルを sum に渡し,要素を一緒に加える.sum(1:5)

## sum に複数の数を渡し,また要素を加える.sum(1, 2, 3, 4, 5)

## 実際ベクトルを複数の引数として渡すことが出来,全てが加えられる.sum(1:2, 3:5)

## もし欠損値があれば,和は未知である,つまりまた欠損値 ....sum(1:5, NA)## ... 欠損値を明示的に除外しない限り:sum(1:5, NA, na.rm = TRUE)

summary Object Summaries

Description

summaryは様々なモデル当てはめ関数の結果の結果サマリーを作るのに使われる総称的関数である.この関数はその最初のクラスに関して特定のメソッドを起動する.

Usage

summary(object, ...)

## Default S3 method:summary(object, ..., digits = max(3, getOption("digits")-3))## S3 method for class 'data.frame'summary(object, maxsum = 7,

digits = max(3, getOption("digits")-3), ...)

## S3 method for class 'factor'summary(object, maxsum = 100, ...)

## S3 method for class 'matrix'summary(object, ...)

Arguments

object 要約したいオブジェクト.

maxsum 整数で,因子に対してどれだけ多くの水準を示すべきかを指示する.

digits 整数で,signif() (summary.defaultに対して)又は format()(summary.data.frameに対して)を使う数値の整形に使われる.

... 作りだされる要約に影響する追加引数.

Page 536: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

536 svd

Details

factorに対して最初の maxsum - 1個の最も頻度の高い水準の頻度が示される.そしてより頻度の低い水準は "(Others)"中に要約する(最大 maxsum個の頻度になる).

関数 summary.lmと summary.glmは lmと glmにより作られる結果を要約する特定のメソッドの例である.

Value

summaryが返す値の形式はその引数のクラスに依存する.そのメソッドにより作られるものについての詳細は特定のメソッドのドキュメントを見よ.

既定のメソッドは特殊化された printメソッドを持つ,クラス c("summaryDefault", "table")のオブジェクトを返す.

行列とデータフレームメソッドはクラス "table"の行列を返す.これは summaryを各列に適用し結果を並べることで得られる.

References

Chambers, J. M. and Hastie, T. J. (1992) Statistical Models in S. Wadsworth & Brooks/Cole.

See Also

anova, summary.glm, summary.lm.

Examples

summary(attenu, digits = 4) #-> summary.data.frame(...), 既定の精度summary(attenu $ station, maxsum = 20) #-> summary.factor(...)

lst <- unclass(attenu$station) > 20 # NA を持つ論理値## 論理値に対する summary.default() -- *.factor と異なる:summary(lst)summary(as.factor(lst))

svd Singular Value Decomposition of a Matrix

Description

矩形行列の特異値分解を計算する.

Usage

svd(x, nu = min(n, p), nv = min(n, p), LINPACK = FALSE)

La.svd(x, nu = min(n, p), nv = min(n, p))

Page 537: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

svd 537

Arguments

x SVD分解を計算すべき数値もしくは複素数値行列.論理値行列は数値に変換される.

nu 計算されるべき左特異ベクトルの数.これは 0と n = nrow(x)の間になければならない.

nv 計算されるべき右特異ベクトルの数.これは 0と n = ncol(x)の間になければならない.

LINPACK 論理値.廃止され無視される.

Details

特異値分解は多くの統計的技術中で重要な役割を果たす. svdと La.svdはそれらの返り値に於いて異なる二つのインタフェイスを提供する.

特異ベクトルの計算は大きな行列に対しては時間のかかる部分である.計算はもしnu <= min(n, p)で nv <= min(n, p)の時最も効率的で,もし共にゼロなら更に効率的である.

基礎にある LAPACKコードからの不成功の結果は正のエラーコード (最も普通には 1)をもつエラーを与える:これらは FORTRANコードの詳細な吟味によってのみ解釈できるがアルゴリズムが収束しなかったことを意味する.

Value

LAPACKにより計算された行列の SVD分解

X = UDV ′,

ここで U と V は直交で, V ′ はVの転置 (そして複素数入力に対しては共役)を意味し,Dは特異値 Dii の対角行列である.同値であるがD = U ′XV でもあり.例の中で検証される.

返り値は次の成分を持つリストを返す

d xの特異値を含むベクトルで長さ min(n, p).

u その列が xの左特異ベクトルを含む行列で,もし nu > 0なら存在する.次元は c(n, nu).

v その列が xの右特異ベクトルを含む行列で,もし nv > 0なら存在する.次元は c(p, nv).

特異ベクトル符号(複素数ケースでは絶対値 1の定数)を除いてのみ定義されることを思い出そう.もし左特異ベクトルがその符号を変更すれば,対応する右ベクトルが同値な分解を与える.

La.svdに対しては返り値は vをその転置 vt (もし複素数なら共役)で置き換えたものになる.

Source

使用される主要関数は LAPACKルーチン DGESDDと ZGESDDである.

LAPACKは http://www.netlib.org/lapackから,そしてそのガイドは参考文献にある.

Page 538: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

538 sweep

References

Anderson. E. and ten others (1999) LAPACK Users’ Guide. Third Edition. SIAM.Available on-line at http://www.netlib.org/lapack/lug/lapack_lug.html.

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

See Also

eigen, qr.

Examples

hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }X <- hilbert(9)[, 1:6](s <- svd(X))D <- diag(s$d)s$u %*% D %*% t(s$v) # X = U D V't(s$u) %*% X %*% s$v # D = U' X V

sweep Sweep out Array Summaries

Description

入力配列から要約統計量をスイープ(順次適用)することで得られる配列を返す.

Usage

sweep(x, MARGIN, STATS, FUN = "-", check.margin = TRUE, ...)

Arguments

x 配列.

MARGIN STATSに対応する xのを与える添字ベクトル.

STATS スイープされる要約統計量.

FUN スイープを実行するために使われる関数.

check.margin 論理値.もし TRUE (既定値)ならば STATSの長さや次元が xの指定された次元に一致しなければ警告する.

... FUNへの追加引数.

Details

FUNは match.funの呼び出しで見つけられる.既定に於けるようにバイナリ演算子が引用化するか逆引用化すれば提供できる.

FUNは二つの引数をもつ関数でなければならない:それは引数 xと apermにより STATSから生成された同じ次元の配列を使って呼び出される.

STATSがベクトルであるよりも配列であるならば, STATS, MARGINそして x間の一貫性チェックはより厳密になる.ベクトルのケースでは警告無しにある種のリサイクルが許される.もし STATSがベクトルで,何らかのリサイクルが行われたら警告を必要とすればsweep(x, MARGIN, as.array(STATS))を使う.

Page 539: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

switch 539

Value

xと同じ形の配列であるが,要約統計量でスイープされている.

References

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

See Also

sweepが基礎としていた apply.センタリングとスケーリングには scale.

Examples

require(stats) # 中央値に対してmed.att <- apply(attitude, 2, median)sweep(data.matrix(attitude), 2, med.att) # 列中央値を引き去る

## より一層のスイープ:A <- array(1:24, dim = 4:2)

## 普通の使用では警告はないsweep(A, 1, 5)(A.min <- apply(A, 1, min)) # == 1:4sweep(A, 1, A.min)sweep(A, 1:2, apply(A, 1:2, median))

## ミスマッチには警告sweep(A, 1, 1:3) # STATS はリサイクルされないsweep(A, 1, 6:1) # STATS がより長い

## 正確なリサイクル:sweep(A, 1, 1:2) # 警告なしsweep(A, 1, as.array(1:2)) # 警告

switch Select One of a List of Alternatives

Description

switchは EXPRを評価し,それに応じて(... 中の)追加引数の一つを選択する.

Usage

switch(EXPR, ...)

Arguments

EXPR 評価結果が数値か文字列になる表現式.

... 選択肢のリスト.もし EXPRが文字列値を持つことを意図しているならば,これらは名前を持つ.例外はもしかすると ‘既定’値として使われる一つの選択肢である.

Page 540: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

540 switch

Details

switchは最初の引数が文字列になるか数値になるかに応じて二つの仕方で動作する.

もし EXPR の値が文字列でなければそれは整数に変換される.これはまた factor に対しても警告付きで起こり,典型的に文字列水準が意味されている.もし整数が 1 とnargs()-1の間にあれば対応する ... の要素が評価され結果が返される:このようにしてもし最初の引数が 3ならば4番目の引数が評価され返される.

もし EXPRの評価結果が文字列ならば,その文字列は ... 中の要素の名前に(正確に)マッチする.もしマッチがあればその要素が欠損していない限り評価される.欠損している場合は次の非欠損要素が評価される.従って例えば switch("cc", a = 1, cc =, cd =, d = 2)の評価結果は 2になる.もしひとつ以上のマッチがあれば最初のマッチ要素が使われる.マッチするものが皆無ならば,もし ... 中に名前のない要素があればその値が使われる.(もしそうした引数が一つ以上あればエラーが返される.)

最初の引数は常に EXPRとされる:もしそれが名前を持てばその名前が(部分的に)マッチしなければならない.

これはプリミティブ関数として実装され,その最初の引数だけを評価し,もし一つが選択されたならば他の一つを評価する.

Value

... の要素の一つの値,又は(どの要素も選択されなければ)不可視の NULL.

結果は評価された要素の可視性を持つ(invisibleを見よ).

警告

以前のバージョンの Rでは混乱を招き同じようには動作しない switchへの呼び出しを書くことが可能であった.互換性(と明快さ)のためには,常に EXPRを最初の引数にし,もし部分マッチの可能性があればそれに名前を付ける.文字列形式では,名前付き値の後に既定値として名前無しの引数を持つ.

References

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

Examples

require(stats)centre <- function(x, type) {

switch(type,mean = mean(x),median = median(x),trimmed = mean(x, trim = .1))

}x <- rcauchy(10)centre(x, "mean")centre(x, "median")centre(x, "trimmed")

ccc <- c("b","QQ","a","A","bb")# 注意:cat() は NULL に対して出力を生成しないfor(ch in ccc)

cat(ch,":", switch(EXPR = ch, a = 1, b = 2:3), "\n")for(ch in ccc)

Page 541: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Syntax 541

cat(ch,":", switch(EXPR = ch, a =, A = 1, b = 2:3, "Otherwise: last"),"\n")

## 因子 f で switch(f, *)ff <- gl(3,1, labels=LETTERS[3:1])ff[1] # C## 従ってここで " is C" を期待するが,しかしswitch(ff[1], A = "I am A", B="Bb..", C=" is C")# -> "A"## 従って警告を得る

## 数値の EXPR は既定値の指定を認めない## -- これは常に NULLfor(i in c(-1:3, 9)) print(switch(i, 1, 2 , 3, 4))

## 可視性switch(1, invisible(pi), pi)switch(2, invisible(pi), pi)

Syntax Operator Syntax and Precedence

Description

Rの構文の概要と演算子の優先度を与える.

Details

以下の単項・二項演算子が定義されている.それらは優先度が高いものから低いものへと並べられている.

:: ::: 名前空間中へのアクセス変数$ @ 成分 /スロット抽出子[ [[ 添字操作

^ 巾乗 (右から左へ)- + 単項のマイナスとプラス: 数列演算子

%any% 特殊演算子(%%と %/%を含む)* / 乗算,除算+ - (二項の)加算,減算< > <= >= == != 順序と比較! 否定

& && アンド| || オア~ 公式中で-> ->> 右辺への付値<- <<- 付値 (右から左へ)= 付値 (右から左へ)? ヘルプ (単項と二項)

一つの表現式中では同意の優先度を持つ演算子は,指示された箇所を除き,左から右へと評価される. (=は必ずしも演算子ではないことを注意する.)

Page 542: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

542 Sys.getenv

二項演算子 ::, :::, $そして @は右辺に名前か文字列定数を必要とする.そして最初の二つはまたそれらを左辺にも必要とする.

関連節中のリンクは基本構文の他の殆どの様相をカバーする.

Note

Rと Sの間には本質的な優先度の違いがある.特に,Sでは ? は(二項の) + -と同じ優先度を持つ.そして & && | ||は等しい優先度を持つ.

References

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

See Also

Arithmetic, Comparison, Control, Extract, Logic, NumericConstants, Paren, Quotes, Reserved.

マニュアル ‘R Language Definition’.

Examples

## 論理 AND ("&&") は OR ("||") より優先度が高い:TRUE || TRUE && FALSE # 次と同じTRUE || (TRUE && FALSE) # そして次と異なる(TRUE || TRUE) && FALSE

## 特殊な演算子は "!" (論理l NOT) より優先度が高い.## これを %in% に対して使うことが出来る:! 1:10 %in% c(2, 3, 5, 7) # !(1:10 %in% c(2, 3, 5, 7)) と同じ## しかしこの場合は "!( ... )" 型式を使うことを強く勧める!

## '=' は '<-' より優先度が低い.従ってそれらを混ぜて使うべきではない## (そして '<-' はともかくもより良いスタイルである):## 従って,これは ("non-catchable") エラーになるx <- y = 5 #-> Error in (x <- y) = 5 : ....

Sys.getenv Get Environment Variables

Description

Sys.getenvは環境変数の値を得る.

Usage

Sys.getenv(x = NULL, unset = "", names = NA)

Arguments

x 文字列ベクトル,または NULL.

unset 文字列.

names 論理値: 結果に名前を付けるか?もし NA (既定値)要素がひとつだけの結果は名前が付かず,複数要素の結果は名前を持つ.

Page 543: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Sys.getpid 543

Details

どちらの引数も必要なら文字に強制変換される.

もし OSが区別するのなら,設定 unset = NAは未設定の変数と値 ""に設定された変数を区別するようにする. POSIXは OSが区別することを必要とし,すべての既知の Rプラットフォームは区別する.

Value

xと同じ長さのベクトルで,(もし names == TRUEなら)変数名をその names属性として持つ.各要素は対応する xの成分により名前がつけられた慣用変数の値を保持する (もしくは,もしその名前の環境変数が見つからなければ値は unset).

殆どのプラットフォームでは Sys.getenv()はすべての環境変数の値を与える現在のロケールでソートされた名前付きのベクトルを返す.ある種のプラットフォームでは許されるが POSIXでは認められない =を含む名前が混乱を与えるかもしれない. (Windowsはそうしたプラットフォームである:そこでは =を含む名前は最初の =の丁度手前で切り詰められる.)

x が欠損しており names が偽でない時は,良い print メソッドを得るためにクラス"Dlist"を持つ.

See Also

Sys.setenv,使用中のロケールについては Sys.getlocale,作業ディレクトリについてはgetwd.

‘environment variables’に対するヘルプは Rが使う多くの環境変数をリストする.

Examples

## HOST が設定されているかどうかはシェル依存,例えば Solaris の csh は未設定.Sys.getenv(c("R_HOME", "R_PAPERSIZE", "R_PRINTCMD", "HOST"))

names(s <- Sys.getenv()) # すべての設定(値は非常に長いかもしれない)head(s, 12)# Dlist print() メソッドを使う

## 言語とロケールの設定 -- しかし Sys.getlocale() を使うほうが良いs[grep("^L(C|ANG)", names(s))]

Sys.getpid Get the Process ID of the R Session

Description

Rセッションのプロセス IDを得る.同時に稼働する二つの Rセッションは異なった IDを持つことが OSから保証されるが,異なった時間に稼働する Rセッションが同じ IDを持つことがあり得る.

Usage

Sys.getpid()

Page 544: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

544 Sys.glob

Value

整数で,Unix風システムではしばしば 1と 32767の間 (しかし,例えば FreeBSDと OS Xは 99999までの IDを使う)でWindowsでは正整数(32767まで).

Examples

Sys.getpid()

Sys.glob Wildcard Expansion on File Paths

Description

ファイルのパスのワイルドカードの展開を行う関数 (‘グロッビング’とも呼ばれる).

Usage

Sys.glob(paths, dirmark = FALSE)

Arguments

paths 相対もしくは絶対ファイルパスに対するパターンを表す文字列ベクトル.欠損値は無視される.

dirmark 論理値: / (または Windowsでは \)で終わらないパターンからのディレクトリにマッチしスラッシュを付加すべきか?プラットフォームによってはサポートされていないかもしれない.

Details

Unix ではこれはファイルパス中のワイルドカードを展開する.詳細についてはシステムの glob システムコールに関するドキュメントを見よ. POSIX 1003.2 標準( http://pubs.opengroup.org/onlinepubs/9699919799/functions/glob.html)があるが,ある種のOSはこれ以上を行う.Rの移植は常にチルド展開を行う.

すべてのシステムは * (ゼロ以上の文字), ? (一つの文字)そして (恐らく) [ (文字クラスまたは範囲)の展開を行うべきである.分離器号で終わるパスの処理はシステム依存である. POSIX-2008に準拠するOSではこれらはディレクトリ(だけ)にマッチするが,それはWindowsでは適正なファイルパスではないので何にもマッチしない. (かっての POSIX標準ではそれらはファイルにマッチした.)

これらの詳細の残りを示す(POSIX標準に準拠している).

ファイル名が .で始まれば,これは正確にマッチされる必要があるかもしれない.例えば Sys.glob("*.RData")は ‘.RData’にマッチするかもしれないし,しないかもしれない.しかし普通は ‘.aa.RData’にマッチしない.これはプラットフォーム依存であることを注意しよう.例えば Solarisでは Sys.glob("*.*")は ‘.’ と ‘..’ にマッチする.

[は文字クラスを開始する.もし [...] 中の最初の文字が !でなければ,これは指定された文字のいずれともマッチする一つの文字である.クラスは空であってはならないので, ]は最初でない限り含めることが出来る.もし最初の文字が !ならば,文字クラスは指定された文字のどれでもない一つの文字にマッチする.文字クラス中の . がファイル名の先頭の . にマッチするかどうかは OSに依存する.

Page 545: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Sys.info 545

文字クラスは [A-Z]のような範囲を含む. -を挟んでクラスの先頭と終わりを表す. (範囲の解釈はロケール固有であるべきで,この例はエストニアロケールでは良いアイデアではない.)

?, *そして [の意味を,それらの前にバックスラッシュを付けることで打ち消せる(文字クラス中を除く). Windowsでは ? と *は適正なファイル名ではないので,これは主に他のプラットフォームとの互換性のためである.

Windowsでは globシステムコールが無いので,我々は部分的なエミュレーションを提供する.

ワイルドカードは * (ゼロ以上の数の文字)と ? 一つの文字にマッチ).もしファイル名が.で始まれば,これは正確に一致しなければならない (Windowsでは,しかしこれはプラットフォーム依存である).

Windowsのファイルパスは分離記号 \または /を使って解釈される.ドライブを持ち相対的な場合 (c:foo\barのような)はトリッキーであるが,それらを正確に処理するように努力がなされる.二重バックスラッシュで始まる UNCパスを処理する試みがなされる.現在のロケールでは適正でない UTF-8 でエンコードされたパスを使うことが出来る.

Value

マッチしたファイルパスの文字列ベクトル.順序はシステム依存(しかし pathsの要素の順序):これは普通現在のロケールかバイト(ASCII)の順序で並べられるが, Windowsでの順序は Unicodeポイントの順序.

ディレクトリのエラーは普通無視されるので,マッチしたものはアクセス可能なファイルパスである (しかしアクセス可能なファイルとは限らない).

See Also

path.expand.

文字列中のバックスラッシュの扱いについては Quotes.

Examples

Sys.glob(file.path(R.home(), "library", "*", "R", "*.rdx"))

Sys.info Extract System and User Information

Description

システムとユーザの情報を報告する.

Usage

Sys.info()

Page 546: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

546 Sys.info

Details

これは POSIXかWindowsのシステムコールを使っている. OS名は期待されるものではないかもしれないことを注意する.例えば OS Xは自分自身を ‘Darwin’,そして Solarisは ‘SunOS’と認識する.

Sys.info()は Rが稼働しているプラットフォームの詳細を返す.一方 R.versionは Rが構築されたプラットフォームの詳細を返す: releaseと versionは異なっているかもしれない.

Value

以下の欄を持つ文字列ベクトル

sysname OS名.

release OSリリース日.

version OSバージョン.

nodename ネットワーク上でのマシンの名前(もしあれば).

machine ハードウェアの簡単な記述,しばしば CPUタイプ.

login ユーザのログイン名.もしくは不明ならば "unknown".

user ユーザの実 ID名.もしくは不明ならば "unknown".

effective_user 実効的なユーザ ID 名.もしくは不明ならば "unknown".これは ‘set-user-ID’プロセス中の実ユーザとは異なるかもしれない.

Unix では最初の5つの欄は uname(2) システムコールから取られる.ログイン名はgetlogin(2) から,そしてユーザ名は getpwuid(getuid()) と getpwuid(geteuid()) からくる.

Windowsでは最後の三つの欄は同じ値である.

Note

releaseと versionの意味はシステム依存である: Unix風システムではそれらは普通カーネルを意味する.そこでは,普通 releaseは数値的バージョンを, versionは追加の情報を与える. releaseの例:

"4.1.3-100.fc21.x86_64" # Linux (Fedora)"3.2.0-4-amd64" # Linux (Debian)"14.5.0" # OS X 10.10.5"5.11" # Solaris

ノード,ログインそしてユーザ名が合理的に期待されるものである保証はない.(特にある種の Linuxディストリビューションではログイン名はリダイレクトされた入力をもつセッションからは不明である.)

system("whoami")のような別形の使用は移植性に欠ける. Unix風システムでは POSIX命令 system("id") は, POSIX オプションだけが使われている(そして多くの BSD とGNU拡張を使わない)という前提で,より一層移植性を持つ.

Windowsは予期せぬバージョンを報告するかもしれない: win.versionに対するヘルプを見よ.

See Also

.Platform,そして R.version. sessionInfo()は使用中のシステムと Rセッションの診断(そして可読な型式でのOSのバージョン)を与える.

Page 547: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Sys.localeconv 547

Examples

Sys.info()## Unixでログイン名を得る別の(そして恐らくより良い)方法Sys.getenv("LOGNAME")

Sys.localeconv Find Details of the Numerical and Monetary Representations in theCurrent Locale

Description

現在のロケールでの数値と通貨表現の詳細を得る.

Usage

Sys.localeconv()

Details

普通 Rは LC_NUMERICの値を参照せずに動作するため,小数点は ’.’ である.従ってこれらの成分の最初の三つはもしローカルカテゴリ LC_NUMERICを現在の Rセッション中で(Rが正しく動作しない時) Sys.setlocaleを使って設定している時だけ意味を持つ.

通貨成分は LC_MONETARY カテゴリが設定されている時だけ既定でない値に設定される(‘例’を見よ).これはしばしば未設定である.どう設定するかは例を見よ.

Value

18の名前付き成分を持つ文字列ベクトル.意味の詳細については自分の ISO Cドキュメントを見よ.

Rをロケールのサポート無しにコンパイルすることが可能である.その場合値は NULLになる.

See Also

ロケールの設定方法については Sys.setlocale.

Examples

Sys.localeconv()## C ロケールでの結果は## decimal_point thousands_sep grouping int_curr_symbol## "." "" "" ""## currency_symbol mon_decimal_point mon_thousands_sep mon_grouping## "" "" "" ""## positive_sign negative_sign int_frac_digits frac_digits## "" "" "127" "127"## p_cs_precedes p_sep_by_space n_cs_precedes n_sep_by_space## "127" "127" "127" "127"## p_sign_posn n_sign_posn## "127" "127"

## 自分の既定ロケールを試みる("C" かもしれない).

Page 548: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

548 sys.parent

old <- Sys.getlocale()## カテゴリは設定されていないかもしれない:## 次のようにすれば良いかもしれない,がサポートされていないかもしれない.Sys.setlocale("LC_MONETARY", locale = "")Sys.localeconv()## もしくは自分自身で適当な値を設定する,例えばSys.setlocale("LC_MONETARY", "de_AT")Sys.localeconv()Sys.setlocale(locale = old)

## Not run: read.table("foo", dec=Sys.localeconv()["decimal_point"])

sys.parent Functions to Access the Function Call Stack

Description

これらの関数は関数に関連する environment (Sの用語では ‘frames’)に呼び出しスタックを遡ってアクセスする.

Usage

sys.call(which = 0)sys.frame(which = 0)sys.nframe()sys.function(which = 0)sys.parent(n = 1)

sys.calls()sys.frames()sys.parents()sys.on.exit()sys.status()parent.frame(n = 1)

Arguments

which もし非負ならフレーム番号で,もし負なら遡るフレーム数.

n 遡る世代数.(‘詳細’節を見よ.)

Details

.GlobalEnvはフレームリストで番号 0を与えられている.引き続く関数評価はフレームスタックを 1だけ増加し,そして呼び出し,関数定義そして関数評価のための環境が適当な添字と共に sys.call, sys.functionそして sys.frameにより返される.

sys.call, sys.frame そして sys.function は引数 which に対して整数値を受け入れる.whichの非負値はフレーム番号で,一方負の値は現在の評価のフレーム番号を逆方向にカウントする.

関数評価の親フレームは関数がその中で呼び出された環境である.それは必ずしも現在の評価のフレーム番号より一つ少ないとは限らないし,それは関数がその中で定義された環境でもない. sys.parentはもし nが 1 (既定値)ならば親フレームの,nが 2なら祖父母フレームの番号を返す,等.‘注意’も見よ.

Page 549: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

sys.parent 549

sys.nframeは整数を返す,これは最初のパラグラフで解説されたような現在のフレームの数である.

sys.callsと sys.framesはそれぞれ全てのアクティブな呼び出しとフレームの対リストを与える.そして sys.parentsはこれらのフレームの各々の親フレームの添字の整数ベクトルを返す.

sys.xxx関数群(sys.statusを除く)はインタプリタ型であるが,それらの文脈はカウントされず報告もされない.それらにアクセスする方法は無い.

sys.status()はこれらの三つの関数への呼び出しの結果である成分 sys.calls, sys.parentsそして sys.framesを成分に持つリストを返す (これは sys.statusへの呼び出しを含む:最初の例を見よ).

sys.on.exit()は現在評価されている関数中の on.exitで使うために保存されている表現式を返す. (これは Sと異なることを注意する.Sは現在のフレームとその親に対する表現式のリストを返す.)

parent.frame(n)は sys.frame(sys.parent(n))に対する便利な簡便形である(少しより効率的に実装されている).

Value

sys.callは呼び出しを,sys.functionは関数定義を返す.そして sys.frameと parent.frameは環境を返す.

他の関数については‘詳細’節を見よ.

Note

厳密には sys.parentと parent.frameは親のインタプリタ型関数の文脈を参照する.従って内部関数(それは文脈を設定するかもしれずしないかもしれないので,呼び出しスタック上に現れるかもしれず現れ無いかもしれない)はカウントされないかもしれず, S3メソッドはまた驚くようなことをする可能性がある.

遅延評価の影響に注意する:これらの二つの関数はそれらが評価されるときに呼び出しスタックを検索し,それらが呼び出された時ではない.それらを関数引数として呼び出しに渡すことは良いアイデアとは思えない.

References

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

See Also

sys.frameと parent.frameの使い方については eval.

Examples

require(utils)

## 注意:最初の二つの例は example() によって実行されると異なった結果を与えるff <- function(x) gg(x)gg <- function(y) sys.status()str(ff(1))

gg <- function(y) {

Page 550: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

550 Sys.readlink

ggg <- function() {cat("current frame is", sys.nframe(), "\n")cat("parents are", sys.parents(), "\n")print(sys.function(0)) # gggprint(sys.function(2)) # gg

}if(y > 0) gg(y-1) else ggg()

}gg(3)

t1 <- function() {aa <- "here"t2 <- function() {## in frame 2 herecat("current frame is", sys.nframe(), "\n")str(sys.calls()) ## list with two components t1() and t2()cat("parents are frame numbers", sys.parents(), "\n") ## 0 1print(ls(envir = sys.frame(-1))) ## [1] "aa" "t2"invisible()

}t2()

}t1()

test.sys.on.exit <- function() {on.exit(print(1))ex <- sys.on.exit()str(ex)cat("exiting...\n")

}test.sys.on.exit()## 'language print(1)' を与え,終了時に 1 をプリントする

## 親がスタックで次のフレームでない例## メソッドの選択適用はフレームを使うのでas.double.foo <- function(x){

str(sys.calls())print(sys.frames())print(sys.parents())print(sys.frame(-1)); print(parent.frame())x

}t2 <- function(x) as.double(x)a <- structure(pi, class = "foo")t2(a)

Sys.readlink Read File Symbolic Links

Description

readlinkを使い,ファイルパスがシンボリックリンクかどうかを判定し,もしそうならリンク先を見つける.

Page 551: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Sys.setenv 551

シンボリックリンクは POSIXの概念であり,Windowsでは移植されていないが,殆どのUnix風システムのファイルシステムでは移植されている.

Usage

Sys.readlink(paths)

Arguments

paths ファイルパスの文字列ベクトル.チルダの展開が行われる:path.expandを見よ.

Value

pathsと同じ長さの文字列ベクトル.項目はファイルのリンク先で,もしエラー(例えばパスが存在しない)があれば "".

システムコール readlinkが無いプラットフォームでは,すべての要素は "".

See Also

シンボリックリンクを作るには file.symlink, (そしてそれらのWindowsでの類似物は),file.info

Sys.setenv Set or Unset Environment Variables

Description

Sys.setenvは環境変数を設定する(Rから呼び出される他のプロセスのため,もしくはこの Rプロセスからの後の Sys.getenv呼び出しのため).

Sys.unsetenvは環境変数を除く.

Usage

Sys.setenv(...)

Sys.unsetenv(x)

Arguments

... 文字列に変換できる値を持つ名前付き引数.

x 文字列ベクトル,または文字列に変換できるオブジェクト.

Page 552: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

552 Sys.setFileTime

Details

Sys.setenv では非標準的な R 名は引用化されなければならない:例を見よ.殆どのプラットフォーム(と POSIX)は "="を含む名前を認めていない. Windowsは認めるが,Rが提供する機能はこれらを正確に扱えないかもしれず,使うべきではない.多くのプラットフォームは環境変数を ""に設定することを認めるが, Windowsは認めず,従ってSys.setenv(FOO = "")は FOOを取り除く.

個々の環境変数やすべての環境変数の最大長にはシステム固有の限界があるかもしれない.

Windowsは環境ブロックに 32,767 文字の制限を持ち, cmd.exeは各値に対し限界 2047(Windows 2000)か 8192文字 (XP and later)を持つ.

Value

論理値ベクトルで,要素はもし対応する変数の設定・除去が成功すると真となる.(Sys.unsetenvに対しては,これは存在しない変数の除去の試みも含む.)

Note

Unixでは,もし Sys.unsetenvがサポートされていなければ,少なくとも環境変数の値を ""にしようと試み,警告が出る.

See Also

Rセッションのため環境変数を設定するためには Sys.getenv, Startup.

作業ディレクトリのためには setwd.

‘environment variables’に対するヘルプは Rが使う多くの環境変数をリストする.

Examples

print(Sys.setenv(R_TEST = "testit", "A+C" = 123)) # `A+C` もまた使えるSys.getenv("R_TEST")

# Windows ならSys.unsetenv("R_TEST")

# Unix ならSys.unsetenv("R_TEST") # 警告が出,成功しない

Sys.getenv("R_TEST", unset = NA)

Sys.setFileTime Set File Time

Description

システムコールを使いファイルやディレクトリの時間を設定する.

Usage

Sys.setFileTime(path, time)

Page 553: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Sys.sleep 553

Arguments

path ファイルやディレクトリを指定する長さ文字列ベクトル.

time クラス "POSIXct"の data-timeか,そうしたものに強制変換できるオブジェクト.分数秒は無視される.

Details

これはファイルの時間を指定された値に設定しようとする.

Unix風システムでは利用できればシステムコール utimesを使い,さもなければ utimesを使う.POSIXファイルシステムではこれは最後にアクセスした時間と変更時間を設定する.

Windowsではこれはシステムコール SetFileTimeを用いて ‘最後の書き込み時間’を設定する.ある種のWindowsファイルシステムは数秒程度の解像度で記録するだけである.

Value

論理値で不可視.もし操作が成功すれば指示.

Sys.sleep Suspend Execution for a Time Interval

Description

指定された時間の間 Rの表現式の実行を中断する.

Usage

Sys.sleep(time)

Arguments

time 実行を中断する時間間隔,秒単位.

Details

この関数を使うと Rは一時的に非常に低い優先度を与えられ,従ってより重要なおもての作業の邪魔をしない.典型的な用法は Rから派生したプロセスが立ち上がり, Rの実行が再開する前にその入力ファイルを読み込むのを許すことである.

意図していることはこの関数は R表現式の実行を中断するが,プロセスが GUIのイベントに反応するのにしばしば十分なだけ覚醒させておくことである.典型的には半秒毎.これは停止させることが出来る(例えば Rコンソールに ‘Ctrl-C’や ‘Esc’を入力する).

プロセスが指定された間隔全部で中断待機する保証はなく (待機は中断されるかもしれない),実行を再開するためには実時間で多少長くかかるかもしれない.

timeは非負でなければならず(そして NAでも NaNでもいけない); Infは許される(中断までいつまでも待機するつもりなら適当かもしれない).時間間隔の解像度はシステム依存であるが,普通 20msかそれ以下である. (最近の Unix風システムでは 1ms以下である.)

Page 554: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

554 sys.source

Value

不可視の NULL.

Note

名前にかかわらず,これは現在 sleep システムコールを使っていない (Windows ではSleepを使っている).

Examples

testit <- function(x){

p1 <- proc.time()Sys.sleep(x)proc.time() - p1 # cpu 使用時間は無視できるはず

}testit(3.7)

sys.source Parse and Evaluate Expressions from a File

Description

与えられたファイル中の表現式を構文解析し,それからそれらを指定された環境中で次々と評価する.

Usage

sys.source(file, envir = baseenv(), chdir = FALSE,keep.source = getOption("keep.source.pkgs"))

Arguments

file 読み込まれるファイルの名前である文字列.

envir 表現式がその中で評価される環境を指定する Rオブジェクト.リストや整数かもしれない.既定値の NULL は基本環境中での評価に対応する.これは恐らく希望するものではない:典型的には envir引数を明示的に提供するべきである.

chdir 論理値;もし TRUEならば,Rの作業ディレクトリは評価される fileを含むディレクトリに変更された.

keep.source 論理値.もし TRUEなら関数はコメントを含むそれらのソースを保存する.より詳細は options(keep.source = *)を見よ.

Details

大きなファイルに対しては keep.source = FALSEは相当の量のメモリを節約する.

評価されるコードが正しい環境 (例えば大局的環境)を使うためには,パッケージ中のソースコードは topenv()を呼び出すべきである.これはもしあれば名前空間,sys.sourceで設定された環境,又はもし保存されたイメージが使われるならば大局的環境,を返す.

Page 555: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

Sys.time 555

See Also

source,そして sys.sourceを使う library.

Examples

## 幾つかのオブジェクトを検索パス上高い位置にある環境に置く簡単な方法tmp <- tempfile()writeLines("aaa <- pi", tmp)env <- attach(NULL, name = "myenv")sys.source(tmp, env)unlink(tmp)search()aaadetach("myenv")

Sys.time Get Current Date and Time

Description

Sys.timeと Sys.Dateはシステムが考えるところの現在の日付を時刻付き,無しで返す.

Usage

Sys.time()Sys.Date()

Details

Sys.timeは絶対的な日付・時刻を返しす.これは様々なタイムゾーンに変換でき,異なった日付を返すかもしれない.

Sys.Dateは現在のタイムゾーンでの日付を返す.

Value

Sys.timeはクラス "POSIXct"のオブジェクトを返す(DateTimeClassesを見よ).ほとんどすべてのシステムでこれは秒以下の精度を持ち,可能性としてマイクロ秒かそれ以上である. Windowsではこれはクロック単位(普通 1/60秒)で増加しミリ秒の精度と報告されている.

Sys.Dateはクラス "Date"のオブジェクトを返す (Dateを見よ).

Note

Sys.timeは分数秒を返すが,クラス "POSIXct"に対する既定の変換(例えばプリント)で無視される.確認には例と format.POSIXctを見よ.

See Also

固定書式文字列でのシステムタイムについては date.

Sys.timezone.

表現式の経過/CPU時間については system.time.

Page 556: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

556 Sys.which

Examples

Sys.time()## 恐らくより正確にプリントする:op <- options(digits.secs = 6)Sys.time()options(op)

## ロケール固有のバージョンの date()format(Sys.time(), "%a %b %d %X %Y")

Sys.Date()

Sys.which Find Full Paths to Executables

Description

これはシステムコマンド whichまたはWindowsではその模倣機能へのインタフェイスである.

Usage

Sys.which(names)

Arguments

names 可能な実行可能プログラムの名前かパスの文字列.

Details

システム命令 whichはシェルによって実行されうるような実行可能プログラム(実行可能スクリプトを含む)の完全なパス名を報告する.絶対パスかパスを探す.

Windowsでは ‘実行可能プログラム’とは拡張子 ‘.exe’, ‘.com’, ‘.cmd’または ‘.bat’を持つファイルである.そうしたファイルは実際に実行可能である必要はないが,systemはそれらを実行しようと試みる.

Unix風システムでは which (普通 ‘/usr/bin/which’)へのフルパスが Rをインストールした時に見つけられる.

Value

namesと同じ長さの文字列ベクトルで,namesで名前がつけられる.要素は実行可能プログラムへの完全なパスであるか,その名前の実行可能ファイルが見つからなかったという何らかの指示である.典型的には指示は ""であるが,これはOSは次第である (そして既知の例外は ""に変更される). names中の欠損値は欠損した返り値を持つ(R 3.0.0から).

Windowsではパスは短いパス(8+3成分で空白なし)で \をパス区切りに持つ.

Page 557: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

system 557

Note

Windowsを除いてこれはシステム命令 whichを呼び出す.これは例えば POSIX標準の一部ではないため,実際は何を実行するかはOS依存である.普通チルダの展開を行い cshのエイリアスを利用するかもしれない.

R 2.x.yでは,空白や他のメタ文字を含む引数はシェルに対するようにエスケープ化される必要があった:例えば空白を持つWindowsのパスは二重引用符で囲む必要があった.

Examples

## 最初の二つは恐らくどこでも存在する## texi2dvi は殆どのUnix風システムとMiKTeXの下で存在するSys.which(c("ftp", "ping", "texi2dvi", "this-does-not-exist"))

system Invoke a System Command

Description

systemは commandで指定される OS命令を実行する.

Usage

system(command, intern = FALSE,ignore.stdout = FALSE, ignore.stderr = FALSE,wait = TRUE, input = NULL, show.output.on.console = TRUE,minimized = FALSE, invisible = TRUE)

Arguments

command 起動されるシステム命令で文字列で与えられる.

intern 論理値(NAでない)で命令の出力を Rの文字列ベクトルとして捕捉するかどうかを指示する.

ignore.stdout, ignore.stderr

論理値(NAでない)で ‘stdout’や ‘stderr’へ書かれるメッセージを無視すべきかどうかを指示する.

wait 論理値(NA でない)で R インタプリタが命令が終了するまで待つかどうか,それとも非同期的に実行するかどうかを指示する.もしintern = TRUE ならばこれは無視される (そしてインタプリタは常に待つ).

input もし文字列ベクトルが提供されると,これは行毎に一つの文字列を一時ファイルにコピーし,そして commandの標準入力はファイルへリダイレクトされる.

show.output.on.console, minimized, invisible

Windowsでは受け入れられるがこのプラットフォームでは無視される引数で,警告が出る.

Page 558: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

558 system

Details

このインタフェイスは年と共にかなり複雑になって来ている:新しいコードに対して勧められるより可搬性があり柔軟なインタフェイスである system2を見よ.

commandは空白で分離された命令と引数として構文解析される.従って命令へのパス(またはファイルパスのような単一の引数)が空白を持てば,それは例えば shQuoteを使い引用化されなければならない. Unix風システムはコマンドラインをシェル(普通 ‘/bin/sh’で POSIXはこのシェルを要求する)に送るので,commandはシェルが実行可能と考える何でも良く,シェルスクリプトを含み,それは ;で分離された複数の命令を含むことが出来る.

Windowsでは systemはシェルを使わず,コマンドラインをシェルに渡す別の関数 shellがある.

もし internが TRUEなら popenが命令を起動し,出力は行ごとに Rの文字列ベクトルに集められる.もし internが FALSEなら C関数 systemが命令の起動に使われる.

waitが命令に &を加えることで実装されている:これは原理的にシェルとは独立であるが,POSIXにより必要とされるので広くサポートされている.

最初の二つの後の引数は時折変更されてきている:最初の後の全ての引数には名前を付けることが勧められる.

命令が実行できるかどうかを確認するのに systemを使うのは多くの落とし穴がある—Sys.whichがより好ましい.

Value

もし intern = TRUEなら命令の出力を与える文字列で,文字列毎に一行を与える.(8095バイトを超える出力行は分割される.)もし命令が Rによって実行できなければエラーになる.もし commandが稼働するがゼロでない終了状態を返すならば警告と共にそれが報告され結果の属性 "status"に記録される:属性 "errmsg"もまた利用できる.

もし intern = FALSEならば,返り値はエラーコード(成功ならば 0)で,不可視の属性を与える(従って明示的にプリントされる必要がある).もし命令が何らかの理由で実行不可能ならば値は 127になる.さもなければ,もし wait = TRUEならば,値は命令が返す終了状態で,そしてもし wait = FALSEならばそれは 0 (便宜的な成功値)になる.

stdoutと stderr

Rのコマンドラインに対しては,ignore.stderr = TRUEで無い限り ‘stderr’に書き込まれたエラーメッセージは端末に送られる.これらは(殆どのシェルで恐らく)次のようにして捕捉できる

system("some command 2>&1", intern = TRUE)

GUIに対しては,もし intern = FALSEならば ‘stdout’や ‘stderr’に送られた出力に何が起きるかはインタフェイス依存であり,そうしたメッセージが GUIコンソールに現れると仮定するのは安全ではない (OS Xの GUIコンソールでは現れるが,そうではないものもある).

UnixとWindowsの違い

プロセスがどのように起動されるのかは基本的に Windows と Unix 風システムでは異なるし,R 関数はその上に組み立てられている高水準 OS 関数も同様である.従ってsystemがどのように振る舞うかについて OS間で多くの違いがあるのは驚きではない.プログラマの便宜のためより重要なものをこの節で要約しておく.

Page 559: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

system.file 559

• 最も重要な違いは,Unix 風システムでは system はシェルを起動し,それからそれが command を実行することである. Windows では命令は直接実行される –commandをシェルを使って実行するインタフェイスとしては shellを使う (既定ではWindowsのシェル cmd.exeで,これは POSIXシェルと大きな違いがある).これはリダイレクトやパイプが systemで動作することを仮定できないことを意味する(リダイレクトは時折動作するが, Windowsのセキュリティパッチの後で動作しなくなる例を見たことがある)ので,WIndowsでは system2 (又は shell)を使うべきである.

• 捕捉されない時 stdoutと stderrに何が起きるかは Rがどのように実行されているかに依存する:Windowsのバッチ命令は Unix風に動作するが,Windowsの GUIからはそれらは一般に失われる. ignore.stderr = TRUEで無い限りWindowsの GUIコンソールから実行されれば system(intern = TRUE)は ‘stderr’を捕捉する.

• エラー時の挙動が微妙な仕方で異なる(そして Rのバージョンで異なっている).

• commandに対する引用化の慣例が異なるが, shQuoteは可搬性のあるインタフェイスである.

• 引数 show.output.on.console, minimized, invisible は Windows でだけ何かをする(そしてそこでは殆どの場合 Rguiに関係する).

See Also

使用中の OSでこれはどのように実装されているかについては man systemと man sh.

プラットフォーム固有の変数については .Platform.

パイプコネクションの設定には pipe.

Examples

# -F フラグを使い現在のディレクトリ中の全てのファイルをリストする## Not run: system("ls -F")

# t1 は文字列ベクトルで,各要素は who からの出力の一つの行を与える# (もしプラットフォームが who を持てば)t1 <- try(system("who", intern = TRUE))

try(system("ls fizzlipuzzli", intern = TRUE, ignore.stderr = TRUE))#ファイルが存在しないので長さゼロの結果,そして警告を与える.

system.file Find Names of R System Files

Description

パッケージの中等にあるファイルの完全なファイル名を見つける.

Usage

system.file(..., package = "base", lib.loc = NULL,mustWork = FALSE)

Page 560: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

560 system.file

Arguments

... 文字列ベクトル.あるパッケージ中の副ディレクトリとファイルを指定する.既定の無しではパッケージのルートを返す.ワイルドカードはサポートされていない.

package 一つのパッケージの名前を持つ文字列.複数の名前が与えられるとエラーになる.

lib.loc Rライブラリのパス名を持つ文字列ベクトル.既定値の NULLの意味については‘詳細’を見よ.

mustWork 論理値.もし TRUEなら,もしマッチするファイルがなければエラーになる.

Details

これは指定されたファイルの存在を file.existsを使ってチェックする.従ってファイルパスはそれらの存在を確立するのに十分な許可がある時だけ返される.

... 中の名前のない引数は普通文字列であるが,文字列ベクトルならばそれらは同じ長さにまでリサイクルされる.

これはパッケージを見つけるのに find.packageを使うので,既定の lib.loc = NULLでは最初に付加されたパッケージ,それから .libPaths()中にリストされた各ライブラリ中を探す.名前空間がロードされているがパッケージは付加されていなければ,これは.libPaths()だけを探す.

Value

...にマッチしたファイルパスを含む正の長さの文字列ベクトル.もしくは(mustWork = TRUEで無い限り)何もマッチしなければ空の文字列 ""

もしパッケージのルートにマッチすれば末尾の分離子は無い.

引数の無い system.file()は baseパッケージのルートを与える.

See Also

Rをインストールしたルートディレクトリについては R.home, list.files.

ワイルドカードを使ってパスを見つける Sys.glob.

Examples

system.file() # 'base' パッケージのルートsystem.file(package = "stats") # 'stats' パッケージのルートsystem.file("INDEX")system.file("help", "AnIndex", package = "splines")

Page 561: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

system.time 561

system.time CPU Time Used

Description

exprが使用した CPU (及びその他の)時間.

Usage

system.time(expr, gcFirst = TRUE)unix.time(expr, gcFirst = TRUE)

Arguments

expr 計時する適正な R表現式.

gcFirst 論理値:計時の前にガベージコレクションを実行すべきか? 既定はTRUE.

Details

system.time は関数 proc.time を呼び出し, expr を評価し,そしてそれからもう一度proc.timeを呼び出し,二つの proc.time呼び出しの差を返す.

unix.timeは Sとの互換性ためにある system.timeの別名である.

同じ表現式の評価の計時は,評価がガベージコレクションを惹き起こすかどうかで非常に変化する.gcFirstが TRUEならガベージコレクション (gc)が exprの評価の直前に実行される.これは普通より一貫性のある計時結果を与える.

Value

クラス "proc_time"のオブジェクト:詳細は proc.timeを見よ.

See Also

時系列向きの proc.time, time.

現在の日付と時刻を得るためには Sys.time.

Examples

require(stats)system.time(for(i in 1:100) mad(runif(1000)))## Not run:exT <- function(n = 10000) {

# 目的:system.time が操作するかどうかテスト; n:ループサイズsystem.time(for(i in 1:n) x <- mean(rt(1000, df = 4)))

}#-- 次のどれかを中断しようとする(Ctrl-C / Escape を使う):exT() #- 2.5GHz Xeon で約 4 秒system.time(exT()) #~ +/- 同じ

## End(Not run)

Page 562: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

562 system2

system2 Invoke a System Command

Description

system2は commandで指定される OS命令を起動する.

Usage

system2(command, args = character(),stdout = "", stderr = "", stdin = "", input = NULL,env = character(), wait = TRUE,minimized = FALSE, invisible = TRUE)

Arguments

command 文字列で与えるシステム命令.

args commandへの引数の文字列ベクトル.

stdout, stderr ‘stdout’や ‘stderr’への出力をどこへ送るか.可能な値は "", Rコンソール(既定),NULL又は FALSE (出力を捨て去る), TRUE (出力を文字列ベクトルに捕捉する),又はファイル名の文字列.

stdin 入力は転送されるべきか? ""は既定,又はファイル名の文字列.もしinputが提供されると無視される.

input もし文字列が提供されると,これは一時ファイルに一行につき一文字列コピーされ,そして commandの標準入力はファイルにリダイレクトされる.

env 環境変数を設定する name=value形式の文字列のベクトル.

wait R インタプリタが命令が終了するのを待つべきかどうかを指示する論理値(NA でない).又はそれを非同期的に実行する.これはもしstdout = TRUEならば無視される(そしてインタプリタは常に待つ).

minimized, invisible

Windowsで受け入れられる引数であるがこのプラットフォームでは警告と共に無視される.

Details

systemとは異なり commandは常に shQuoteで引用化されるので,それは引数無しの単一の命令でなければならない.

commandがどのようにして見つけられるかの詳細は systemを見よ.

Windowsでは envはそれらのコマンドラインで環境変数を受け入れる Rと makeのような命令に対してだけサポートされている.

ある種の Unixの命令(lsのある実装のような)はそれらの出力を,もしそれがパイプやリダイレクトされているとそれらが考えると変更する: stdout = TRUEはパイプを使うが,一方 stdout = "some_file_name"はリダイレクトを使う.

それが実装されている仕方から,Unix風システムでは stderr = TRUEは stdout = TRUEを意味する:もしこれが指定されたことでなければ警告が与えられる.

Page 563: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

t 563

Value

もし stdout = TRUEか stderr = TRUEならば,命令の出力を与える文字列ベクトルで,文字列毎に一行になる. (8095バイトを超える出力行は分割される.)もし命令が実行できなければ Rのエラーが生成される.もし commandが実行されるがゼロでない終了状態を与えるならば,これは警告と共に結果の属性 "status"中に報告される:属性 "errmsg"もまた利用できる.

他のケースでは,返り値は invisible 属性を与えられたエラーコード(成功ならば 0)である(従って明示的にプリントされる必要がある).もし命令が何らかの理由で実行できなければ値は 127になる.さもなければ,もし wait = TRUEならば値は命令により返される終了状態である.そしてもし wait = FALSEならばそれは 0 (便宜的な成功値)になる.

Note

system2は systemよりも可搬性が高く柔軟なインタフェイスで R 2.12.0で導入された.それはWindowsでシェルを起動する必要がない出力のリダイレクト,commandの実行のための環境変数を設定する可搬性の高い方法,そして stdoutと stderrのリダイレクトに対する肌理の細かな調整を可能にする.逆に system (そしてWindowsでは shell)は任意のコマンドラインの起動を許す.

stdoutと stderrが共に TRUEか同じファイルなら,二つのストリームが順に差し挟まれる保証は無い.これは命令と OSによって使われる双方のバッファリングに依存する.

See Also

system.

t Matrix Transpose

Description

行列やデータフレーム xを与えた時 tは xの転置を与える.

Usage

t(x)

Arguments

x 典型的に行列やデータフレーム.

Details

これはそれに対してメソッドを書くことが出来る総称的関数である.ここでの説明は既定と "data.frame"メソッドに適用される.

データフレームは最初行列に変換される:as.matrixを見よ. xがベクトルなら,それは列として扱われる.つまり結果は 1行の行列になる.

Value

dimと dimnamesが xのそれらから適当に構成された行列で,名前を除く他の属性がコピーされている.

Page 564: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

564 table

Note

複素数行列 Aの共役転置は AH や A∗ と表され Conj(t(A))として計算される.

References

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

See Also

配列の次元を置換するためには aperm.

Examples

a <- matrix(1:30, 5, 6)ta <- t(a) ##-- つまり全ての i,j で a[i, j] == ta[j, i]:for(j in seq(ncol(a)))

if(! all(a[, j] == ta[j, ])) stop("wrong transpose")

table Cross Tabulation and Table Creation

Description

table は因子水準の各組み合わせ毎の集計の分割表を作るためにクロス集計因子を作る.

Usage

table(..., exclude = if (useNA == "no") c(NA, NaN), useNA = c("no","ifany", "always"), dnn = list.names(...), deparse.level = 1)

as.table(x, ...)is.table(x)

## S3 method for class 'table'as.data.frame(x, row.names = NULL, ...,

responseName = "Freq", stringsAsFactors = TRUE,sep = "", base = list(LETTERS))

Arguments

... 因子(文字列を含む)として解釈できる一つ又はそれ以上のオブジェクト,又はその成分がそのように解釈できるリスト(データフレーム). (as.table に対して引数は指定されたメソッドに渡される;as.data.frameに対しては使用されない.)

exclude ... 中の全ての因子に対して除かれる水準.もし NULLに設定するとそれは useNA = "always"を意味する.非因子引数に対するその解釈については‘詳細’を参照.

useNA テーブルに NA値を含むか. ‘詳細’を見よ.短縮出来る.

dnn 結果中の次元に与えられる名前 (次元名の名前).

Page 565: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

table 565

deparse.level 既定の dnnをどのように構成するかを制御する. ‘詳細’を見よ.

x 任意の Rオブジェクト,又は as.data.frameメソッドに対してはクラス "table" を継承するオブジェクト. as.data.frame.table(x, *) はテーブルでない xに対しては配列を再整形するためには明示的に呼びだされるかもしれない.

row.names データフレームに対して行名を与える文字列.

responseName テーブル項目に対して使われる名前で,普通計数.

stringsAsFactors

論理値:分類因子は因子として返される(既定)べきか文字列にすべきか?

sep, base provideDimnamesに渡される.

Details

もし引数 dnnが提供されないと,内部関数 list.namesが‘次元名の名前’を計算するために呼び出される.もし ... 中の引数が名前を持てば,これらの名前が使われる.残りの引数に対しては deparse.level = 0は空の名前を与え, deparse.level = 1はもしそれがシンボルならば与えられた引数を使い,そして deparse.level = 2は引数を逆構文解析する.

excludeが指定され NULLでない時だけ(つまり既定ではない), tableは因子引数の水準を捨てる可能性がある.

useNA はテーブルが NA 値のカウントを含むかどうかを制御する:カウントが正の時だけ,そしてゼロカウントに対してすら許された値は決して対応しない.これはexclude = NULL を指定することで上書きされる. exclude で指定された水準は NA にマップされ,従って NAカウントに含められることを注意する.

excludeと useNAの双方は "全てか皆無か"原則の上で動作する.もし多元テーブルの次元を個別に制御したければ,各引数を factorか addNAを使って修正する.

変換に頼るよりは因子を提供するのが最良である.特に, excludeは因子への変換に使われ,そして変換前に exclude中に現れる値(水準では無く)は捨て去られる代わりに NAにマップされる.

クラス "table"に対する summaryメソッド( tableや xtabsで作られたオブジェクトに対して使われる)は基本的情報を与え,因子の独立性に対するカイ二乗検定を実行する(関数 chisq.testは現在二元テーブルだけを扱える).

Value

table()は分割表を返す.これはクラス "table"のオブジェクトで整数値の配列である.Sとは異なり結果は常に配列で,因子が一つなら一次元配列である.

as.tableと is.tableはそれぞれ分割表に変換しテストする.

クラス "table"を継承するオブジェクトに対する as.data.frameメソッドは分割表の配列を基礎とする表現を分類因子と対応項目を含むデータフレームに変換される(後者はresponseNameという名前の成分になる).これは xtabsの逆操作である.

References

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

Page 566: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

566 table

See Also

tabulateは基礎にある関数でより細かな制御を許す.

多次元テーブルのプリント(そしてそれ以上)に対しては ftableを使う. margin.table,prop.table, addmargins.

公式インタフェイスを使ったデータフレームのクロス集計に対しては xtabs.

Examples

require(stats) # rpois と xtabs に対して## 簡単な頻度分布table(rpois(100, 5))## デザインのチェック:with(warpbreaks, table(wool, tension))table(state.division, state.region)

# 簡単な二元分類表with(airquality, table(cut(Temp, quantile(Temp)), Month))

a <- letters[1:3]table(a, sample(a)) # dnn は c("a", "")table(a, sample(a), deparse.level = 0) # dnn は c("", "")table(a, sample(a), deparse.level = 2) # dnn は c("a", "sample(a)")

## xtabs() <-> as.data.frame.table() :UCBAdmissions ## 既に分割表DF <- as.data.frame(UCBAdmissions)class(tab <- xtabs(Freq ~ ., DF)) # xtabs & table## tab は元のテーブルと同じall(tab == UCBAdmissions)all.equal(dimnames(tab), dimnames(UCBAdmissions))

a <- rep(c(NA, 1/0:3), 10)table(a)table(a, exclude = NULL)b <- factor(rep(c("A","B","C"), 10))table(b)table(b, exclude = "B")d <- factor(rep(c("A","B","C"), 10), levels = c("A","B","C","D","E"))table(d, exclude = "B")print(table(b, d), zero.print = ".")

## NA のカウント:is.na(d) <- 3:4d. <- addNA(d)d.[1:7]table(d.) # ", exclude = NULL" は不要## つまり 'd' の NA をカウントしたければtable(d, useNA = "ifany")

## NA のカウントを持つ二元テーブル.三番目の変種は馬鹿げているが,しかし## exclude や useNA 使って出来ない事柄を示している.with(airquality,

table(OzHi = Ozone > 80, Month, useNA = "ifany"))with(airquality,

table(OzHi = Ozone > 80, Month, useNA = "always"))with(airquality,

Page 567: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

tabulate 567

table(OzHi = Ozone > 80, addNA(Month)))

tabulate Tabulation for Vectors

Description

tabulateは整数値ベクトルを取り各整数がその中に登場する回数を数える.

Usage

tabulate(bin, nbins = max(1, bin, na.rm = TRUE))

Arguments

bin (正整数の)数値ベクトル,又は因子.ロングベクトルがサポートされている.

nbins 使われるビンの数.

Details

tabulateは table関数の実働関数である.

もし binが因子なら,その内部整数表現が作表される.

もし binの要素が数値であるが整数でなければ as.integerにより切り詰められる.

Value

整数ベクトル(名前無し).値 1, ..., nbinsの各々に対するビンがある;この範囲外の値と NAは(黙って)無視される.

64ビットプラットフォームでは binは 231 もしくはそれ以上の要素を持つことが出来,従って一つのカウントは最大整数を超えるかもしれない:これは現在エラーになる.

See Also

table, factor.

Examples

tabulate(c(2,3,5))tabulate(c(2,3,3,5), nbins = 10)tabulate(c(-2,0,2,3,3,5)) # -2 と 0 は無視されるtabulate(c(-2,0,2,3,3,5), nbins = 3)tabulate(factor(letters[1:10]))

Page 568: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

568 tapply

tapply Apply a Function Over a Ragged Array

Description

関数を不揃いの配列の各セルに適用する,つまりある因子の水準のユニークな組み合わせで与えられる(空でない)値のグループ毎.

Usage

tapply(X, INDEX, FUN = NULL, ..., simplify = TRUE)

Arguments

X 原子的なオブジェクトで,典型的にはベクトル.

INDEX 一つ又は複数の因子で,各々は Xと同じ長さ.要素は as.factorで因子に変換される.

FUN 適用される関数もしくは NULL. +, %*% 等の関数に対しては,関数名は逆引用化又は引用化されなければならない.もし FUNが NULLなら,tapplyは tapplyが普通生成する多元配列の添字操作に使えるベクトルを返す.

... FUNへのオプション引数:ノート節.

simplify もし FALSEなら tapplyは常にモード "list"の配列を返す.もし TRUE(既定)なら,FUN が常にスカラーを返すならば tapply はスカラーモードの配列を返す.

Value

もし FUNが NULLで無ければ,それは match.funに渡され,従ってそれは関数でも関数名を与えるシンボルや文字列でも良い.

FUNがあれば,tapplyはその中に何らかのデータがある各セルに対して FUNを呼び出す.もし FUNがそうした各セルに対して単一の原子的な値を返し(例えば関数 mean又は var)そして simplifyが TRUEならば,tapplyは値を含む多元配列を返す.そして空のセルに対しては NAを返す.配列は INDEXが持つ成分と同じ数の次元を持つ;一つの次元中の水準の数は対応する INDEXの対応する成分中の水準の数(nlevels())である.もし返り値がクラスを持てば(例えばクラス "Date"のオブジェクト)クラスは捨て去られる.

Sとは逆に simplify = TRUEは常に配列,もしかすると 1次元,を返すことを注意する.

もし FUNが単一の原子的な値を返さなければ tapplyはモード listの配列を返し,その成分は FUN への個別の呼び出しの値である,つまり結果は次元属性を持つリストである.

配列が返されるときはその次元名は INDEXの名前を使い名付けられ, (もしかすると変換の後の)グルーピング因子の水準に基づいている.

リストの結果に対しては,空のセルに対応する要素は NULLである..

Note

... 引数で与えられる FUNへのオプション引数はセルに分割されない.従って FUNに対して Xと同じ長さの追加引数を期待するときは不適当である.

Page 569: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

taskCallback 569

References

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

See Also

便利関数 by と aggregate (tapply を使う); apply, lapply とそのバージョン sapply とmapply.

Examples

require(stats)groups <- as.factor(rbinom(32, n = 5, prob = 0.4))tapply(groups, groups, length) #- 次とほとんど同じtable(groups)

## データフレームからの分割表:名前付き次元名を持つ配列tapply(warpbreaks$breaks, warpbreaks[,-1], sum)tapply(warpbreaks$breaks, warpbreaks[, 3, drop = FALSE], sum)

n <- 17; fac <- factor(rep(1:3, length = n), levels = 1:5)table(fac)tapply(1:n, fac, sum)tapply(1:n, fac, sum, simplify = FALSE)tapply(1:n, fac, range)tapply(1:n, fac, quantile)

## ... 引数の例:四半期毎の平均を見つけるtapply(presidents, cycle(presidents), mean, na.rm = TRUE)

ind <- list(c(1, 2, 2), c("A", "A", "B"))table(ind)tapply(1:3, ind) #-> the split vectortapply(1:3, ind, sum)

taskCallback Add or Remove a Top-Level Task Callback

Description

addTaskCallbackはトップレベルの作業が完了するたびに呼び出される R関数を登録する.

removeTaskCallbackは先に addTaskCallbackで登録された関数の登録を解除する.

これはタスク完了時の動作の処理に対する内部/ネイティブな機構への低水準なアクセスを提供する.各作業の完了時に呼び出される S 関数を管理する S 言語レベルのtaskCallbackManagerを使うことが出来る.これはより簡単でより直接的である.

Usage

addTaskCallback(f, data = NULL, name = character())removeTaskCallback(id)

Page 570: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

570 taskCallback

Arguments

f トップレベルの作業が成功裏に終了する度に起動される関数.これはdataが指定されたかどうかでそれぞれ 5又は 4つの引数で呼び出される.返り値はコールバックをアクティブなコールバックのリスト中に保持するか捨て去るかを指示する論理値で無ければならない.

data もし指定されると,これはコールバック関数 fへの呼び出し中の 5番目の引数である.

id 内部コールバックのリスト中の除去される要素を特定する文字列化整数.整数添字は 1ベースである,つまり最初の要素は 1である.現在登録されたハンドラーの名前は getTaskCallbackNames を使って得られ,また addTaskCallbackへの呼び出し中で返される.

name 文字列:使用する名前.

Details

トップレベルのタスクは入力の全部の行ではなく個別の表現式である.このように入力行が形式 expression1 ; expression2を持てば二つのトップレベルのタスクを与える.

トップレベルのタスクコールバックはトップレベルのタスクに対する表現式,トップレベルのタスクの結果,それが成功裏に完了したかどうか指示する論理値,そして結果をプリントするかどうかを指示する論理値と共に呼びだされる.もし data 引数がaddTaskCallback の呼び出し中で指定されていると,値は5番目の引数として与えられる.

コールバック関数は一つの論理値を返すべきである.もし値が FALSEならば,コールバックはタスクリストから除かれ,この機構により再び呼び出されることはない.もし関数が TRUEを返せば,それはリストに保持され次のトップレベルのタスクの完了時に呼び出される.

Value

addTaskCallbackはこの新しいコールバックが占めるタスクコールバックのリスト中のポジションを与える整数値を返す.これはコールバックの現在の位置だけである.これはリスト中の先にある位置から他の値を除くこと無く項目を除くことに使うことが出来る.

removeTaskCallback は指定された要素が除かれているかどうかを指示する論理値を返す.もしリスト中の要素の位置や名前に対応しない不正確な名前や添字が与えられるとこれは失敗することがある(つまり FALSEを返す).

Note

R関数ではなく Cルーティンを許す Cレベルのトップレベルのタスクコールバックへのアクセスがある.

See Also

getTaskCallbackNames, taskCallbackManager,http://developer.r-project.org/TaskHandlers.pdf.

Page 571: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

taskCallbackManager 571

Examples

times <- function(total = 3, str = "Task a") {ctr <- 0

function(expr, value, ok, visible) {ctr <<- ctr + 1cat(str, ctr, "\n")if(ctr == total) {

cat("handler removing itself\n")}return(ctr < total)}

}

# 4 つのトップレベルのタスクに対して動作するコールバックを加え# それから自分自身を取り除くn <- addTaskCallback(times(4))

# それが依然リストの先頭にあることを仮定し,取り除くremoveTaskCallback(n)

## Not run:# これを次のように実行するのには意味がないaddTaskCallback(times(4))

sum(1:10)sum(1:10)sum(1:10)sum(1:10)sum(1:10)

## End(Not run)

taskCallbackManager Create an R-level Task Callback Manager

Description

これは各トップレベルの作業の終了時に起動されるコールバックやアクションを管理するための完全に S言語による機構を提供する.本質的に,基礎にあるネイティブなタスクコールバック機構を持つ一つの R関数をこのマネージャから登録し,そしてこの関数がマネージャの管理下にある他の Rコールバックの起動を処理する.マネージャはユーザレベルのコールバックのリストを管理する共有変数にアクセスする関数の集まりからなる.

Usage

taskCallbackManager(handlers = list(), registered = FALSE,verbose = FALSE)

Page 572: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

572 taskCallbackManager

Arguments

handlers これは各要素がリストであるコールバックのリストで良い.要素リストは要素,コールバック関数である名前付きの "f" とコールバックが起動されるときにそれに提供される5番目の引数である名前付きの"data",を持つ.典型的にはこの引数は指定されず,マネージャが作られた後 addを使ってコールバックを登録する.

registered evaluate関数が既に内部的タスクコールバック機構を使って登録されているかどうかを指示する論理値.これは普通 FALSEで,コールバックが add関数を使って最初に加えられた時 evaluate関数は自動的に登録される.この引数を TRUEとし addTaskCallbackを手動で呼び出すことで関数が登録された時に制御できる.

verbose 論理値で,もし TRUEならば,この選択適用マネージャが実行するある行動についての情報をコンソールにプリントするようにする.これはコールバックとハンドラー自体のデバッグに有用である.

Value

6個の関数を含むリスト:

add このマネージャにコールバックを登録する.オプションの5番目の引数,コールバックがリスト中に保管されるオプションの名前,そして必要なら Cレベルの選択適用機構で evaluateを登録するかを制御するregister引数を持つ関数を与える.

remove マネージャのコールバックの集まりから名前もしくは位置/添字を使い一つの要素を取り除く.

evaluate ‘実’コールバック関数で,Cレベルの選択適用機構で登録され,このマネージャが管理する Rレベルのコールバックの各々を起動する.

suspend マネージャの一時停止状態を設定する関数.もし一時停止にされると,どのコールバックも作業終了時に起動されない. status引数に論理値を指定することで状態を設定できる.

register 内部的な C レベルの選択適用機構をもつ evaluate 関数を登録する関数.これは add関数で自動的に行われるが,手動で呼び出すことも出来る.

callbacks このマネージャで保守されているコールバックのリストを返す.

See Also

addTaskCallback, removeTaskCallback, getTaskCallbackNames,http://developer.r-project.org/TaskHandlers.pdf

Examples

# マネージャを作るh <- taskCallbackManager()

# コールバックを加えるh$add(function(expr, value, ok, visible) {

cat("In handler\n")return(TRUE)

}, name = "simpleHandler")

# 内部コールバックを見る

Page 573: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

taskCallbackNames 573

getTaskCallbackNames()

# R レベルのコールバックを見るnames(h$callbacks())

getTaskCallbackNames()removeTaskCallback("R-taskCallbackManager")

taskCallbackNames Query the Names of the Current Internal Top-Level Task Callbacks

Description

これは,各トップレベルの作業の終了時に起動される現在登録されたタスクコールバックに対する名前(又は識別子)を得る手段を与える.これらの識別子はコールバックを削除するのに使える.

Usage

getTaskCallbackNames()

Value

トップレベルの作業が完全に終了した時に起動される登録されたコールバックの各々に対する名前を与える文字列ベクトル.各名前はコールバックを登録した際に使われたものであり addTaskCallbackへの呼び出しで返されるようなものである.

Note

ユーザレベルのタスクコールバックを管理するために taskCallbackManagerを使うことが出来る,つまり完全に S言語で書かれ名前により直接にアクセスできる S言語関数である.

See Also

addTaskCallback, removeTaskCallback, taskCallbackManagerhttp://developer.r-project.org/TaskHandlers.pdf

Examples

n <- addTaskCallback(function(expr, value, ok, visible) {cat("In handler\n")return(TRUE)

}, name = "simpleHandler")

getTaskCallbackNames()

# そしてそれを名前で削除removeTaskCallback("simpleHandler")

h <- taskCallbackManager()h$add(function(expr, value, ok, visible) {

Page 574: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

574 tempfile

cat("In handler\n")return(TRUE)

}, name = "simpleHandler")getTaskCallbackNames()removeTaskCallback("R-taskCallbackManager")

tempfile Create Names for Temporary Files

Description

tempfileは一時ファイルの名前として使うことが出来る文字列ベクトルを返す.

Usage

tempfile(pattern = "file", tmpdir = tempdir(), fileext = "")tempdir()

Arguments

pattern 名前の最初の部分を与える空でない文字列ベクトル.

tmpdir ディレクトリ名を与える空でない文字列ベクトル.

fileext ファイル拡張子を与える空でない文字列ベクトル.

Details

結果の長さは三つの引数の長さの最大値になる;短い引数の値はリサイクルされる.

名前は Rセッションと同時に開かれている Rセッションの中では tempfileへの呼び出しに関してユニークである可能性が非常に高い(tmpdirが指定されていない限り).フェイル名は現在使われていないことが保証される.

ファイル名は tmpdir, pattern文字列,ランダムな16進数文字列,そして拡張子 fileextで与えられるパスを連結して得られる.

既定では tmpdirは tempdir()で与えられるディレクトリになる.これはセッション毎のサブディレクトリで Rセッションが開始した時環境変数 TMPDIR, TMPそして TEMPが順にチェックされ書き込み可能なディレクトリを指し示す最初に見つかったものが使われる:もしどれも不成功なら ‘/tmp’が使われる.パスは空白を含んではならない. Rセッション中のこれらの環境変数のどれかの設定は tempdir()に影響を与えない:セッション毎の一時ディレクトリはインタプリタが開始する前に作られる.

Value

tempfileに対しては可能な(一時)ファイルの名前を与える文字列ベクトル. tempfileはファイルを生成しないことを注意する.

tempdirに対してはセッション毎の一時ディレクトリのパス.

並列化に関する注意

パッケージ parallel (又は multicore)中の mclapplyのような関数でフォークされた Rプロセスはセッション毎の一時ディレクトリを共有する.更に,‘現在使用中でないことの保証’は依頼時だけに適用され,二つの子プロセスは同時に依頼する可能性がある.これは異なった子プロセスが異なった名前で tempfileを呼び出すことで克服できる.

Page 575: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

textConnection 575

References

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

See Also

ファイルを削除するには unlink.

Examples

tempfile(c("ab", "a b c")) # スペース入りのファイル名を与える!

tempfile("plot", fileext = c(".ps", ".pdf"))

tempdir() #全てのプラットフォームで動作するがプラットフォーム依存の結果

textConnection Text Connections

Description

入力と出力用テキストコネクション.

Usage

textConnection(object, open = "r", local = FALSE,encoding = c("", "bytes", "UTF-8"))

textConnectionValue(con)

Arguments

object 文字列.コネクションの説明.入力に対してはこれは Rの文字列ベクトルオブジェクトで,出力コネクションに対しては出力を受け取る Rの文字列ベクトルに対する名前,もしくは NULL (何もない).

open 文字列.入力コネクションに対しては"r" (又は同値な "")又は出力コネクションに対しては "w"又は "a".

local 論理値.出力コネクションに対してだけ使われる.もし TRUEなら出力は呼び出し環境中の変数に付値される.さもなければ大局的環境が使われる.

encoding 文字列.部分マッチされる.入力コネクションに対してだけ使われる.object中のマーク付き文字列がどのように処理されるか:現在のロケールに変換され,バイト毎に使われるか UTF-8に翻訳される.

con 出力テキストコネクション.

Page 576: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

576 textConnection

Details

入力テキストコネクションが開かれコネクションオブジェクトが作られる時に文字列ベクトルがコピーされる.そして closeはコピーを破壊する. objectは文字列ベクトルの名前でなければならない:しかしながら短い表現はそれらが 60バイト以下に逆構文解析されるならば受け入れられる.

出力テキストコネクションが開かれると,local 引数に応じてユーザの作業空間か呼び出し環境中に与えられた名前の R の文字列ベクトルが作られる.このオブジェクトは常にコネクションへの出力の完全な行を保持し, isIncomplete は不完全な最終行があるかどうかを指示する.コネクションを閉じると完全であろうとなかろうと最終行が出力される. (一つの行はそれが R では "\n" で表される end-of-line で終わっていると完全である).出力文字列ベクトルはコネクションに対して close が呼び出されるまでロックされたバインディング(lockBinding を見よ)を持つ.文字列ベクトルはまたtextConnectionValueを使って回収でき,これは object = NULLならばそれを行う唯一の方法である.もし現在のロケールが Latin-1か UTF-8であると検出されると,文字列ベクトルの非アスキー要素はそのようにマークされる (Encodingを見よ).

mode = "a"でテキストコネクションを開くとユーザの作業空間か呼び出し環境中の与えられた名前を持つ既存の文字列ベクトルに付け加えようと試みる.もし見つからなければ (例え正しい名前だが間違った型のオブジェクトが存在しても)新しい文字列ベクトルが警告と共に作られる.

テキストコネクションでは seekは出来ず,seekは常に位置としてゼロを返す.

テキストコネクションは少々普通でないセマンティックスを持つ:それらは常に開かれており,入力テキストコネクションをそれを閉じることなしに捨て去っても(従ってガベージコレクションされる)警告は出ない.

Value

textConnection に対してはクラス "textConnection" のコネクションオブジェクトで,クラス "connection"を継承する.

textConnectionValueに対しては文字列ベクトル.

Note

出力用としてのテキストコネクションは文字列ベクトルを行毎に更新するので使用は相対的に高く付き,出力を集めるにはしばしば匿名の file()コネクションを使うほうが好ましい.

vsnprintf が必要な長さの出力を返さない(稀な)プラットフォームでは出力コネクションに対しては一行 100,000文字の制限がある:それより長い行は警告と共に打ち切られる.

References

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.[Sは入力用のテキストコネクションだけを持つ.]

See Also

connections, showConnections, pushBack, capture.output.

Page 577: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

tilde 577

Examples

zz <- textConnection(LETTERS)readLines(zz, 2)scan(zz, "", 4)pushBack(c("aa", "bb"), zz)scan(zz, "", 4)close(zz)

zz <- textConnection("foo", "w")writeLines(c("testit1", "testit2"), zz)cat("testit3 ", file = zz)isIncomplete(zz)cat("testit4\n", file = zz)isIncomplete(zz)close(zz)foo

# R の出力を捕捉:help(lm) の例の一部分を使用zz <- textConnection("foo", "w")ctl <- c(4.17, 5.58, 5.18, 6.11, 4.5, 4.61, 5.17, 4.53, 5.33, 5.14)trt <- c(4.81, 4.17, 4.41, 3.59, 5.87, 3.83, 6.03, 4.89, 4.32, 4.69)group <- gl(2, 10, 20, labels = c("Ctl", "Trt"))weight <- c(ctl, trt)sink(zz)anova(lm.D9 <- lm(weight ~ group))cat("\nSummary of Residuals:\n\n")summary(resid(lm.D9))sink()close(zz)cat(foo, sep = "\n")

tilde Tilde Operator

Description

チルドはモデル公式の左辺と右辺を分離するために使われる.

Usage

y ~ model

Arguments

y, model シンボリックな表現式.

Details

左辺はオプションであり,片側だけの公式はある種の文脈で使われる.

公式はモード callを持つ.それは [[を使って部分操作が出来る:成分はこの順序で ~,左辺(もし存在すれば),そして右辺である.

Page 578: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

578 timezones

References

Chambers, J. M. and Hastie, T. J. (1992) Statistical models. Chapter 2 of Statistical Models in S edsJ. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.

See Also

formula

timezones Time Zones

Description

Rのタイムゾーンに関する情報.Sys.timezoneは現在のタイムゾーンの名前を返す.

Usage

Sys.timezone(location = TRUE)

OlsonNames()

Arguments

location 論理値:Olson/IANAデータベースで使われているような位置名を見つけようとするか? (下の‘タイムゾーン名’を見よ.)

Details

タイムゾーンはシステム固有のトピックであるが,最近ではほとんどすべての Rプラットフォームは同じような基礎コードを使う.これは Linux, OS X, Solaris, AIX, FreeBSD,Sun Java >= 1.4そして Tcl >= 8.5で使われ,Windowsでは Rと共にインストールされる.不幸にも実装には多くのシステム固有のエラーがある. Unix風システムと WindowsでR自体のコードを使うことが出来る:これは OS Xでは既定であり Solarisに対しては推奨される.

タイムゾーンを環境変数 TZ で設定できる:適当な値は節‘タイムゾーン名’を見よ.Sys.timezone() はもし設定されていれば TZ の値を返す (幾つかの OS ではそれは常に設定されている),さもなければそれはもし TZ に対して設定されていれば現在のタイムゾーンである値を探そうと試みる.これは一般には可能ではなく,Windows のSys.timezone(FALSE)は現在の時間に対して使われる省略形を探す.

もし TZ が設定されているが空か不正ならば,殆どのプラットフォームは既定で俗に‘GMT’ として知られているタイムゾーン ‘UTC’ を使う (https://en.wikipedia.org/wiki/Coordinated_Universal_Timeを見よ).ある種の,しかし全てではない,プラットフォームでは不正なタイムゾーンに対して警告を出す.)

タイムゾーンは19世紀半ばまで使われることはなく,20世紀までは広く採用されず,そしてDST(daylight saving time) (サマータイムとしても知られている)は最初20世紀初期(最も広範囲には1916年)に導入された.過去百年の間に位置は主要なタイムゾーンとの連携を変化しており,様々な年に廃止(導入)され,使用 DTS規則は後で変更されたり全く変更されなかったりする.

POSIXctの非常に普通の実装は符号付き整数としてであり,従って1901年の終わりにまでしか遡れない:そうしたシステムでは Rはそれ以前は1902年当時と同じタイムゾーン

Page 579: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

timezones 579

にあったと仮定する.世界の殆どは1902年にはタイムゾーンを採用していなかったが (したがって経度に基づく局所‘平均時間’を使っていた)それ以前にタイムゾーンが変更されていた地域も少しある. 64ビット表現が普通になってきている;不幸なことにある種のOS (特に OS X)ではデータベース情報は範囲 1901–2038でだけ得られ,端の年では不完全である.

Value

Sys.timezone は OS 固有の文字列を返す. NA や空の文字列(これはある種の OS では‘UTC’を意味する)の可能性がある.既定の location = TRUEでは "Europe/London"のような位置であり,確認が出来る.location = FALSEではこれは "EST"又はWindowsでは"CEST"のような省略形かもしれない.

OlsonNamesは文字列ベクトルを返す.

タイムゾーン名

名前 "UTC"とその同義語 "GMT"は全てのプラットフォームで受け入れられる.

OSがそれらの適正なタイムゾーンをどこで解説しているかは曖昧なことがある. C関数tzsetのヘルプは役に立つが,しかしそれも不正確なことがある.面倒な POSIXの仕様(http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08にある環境変数 TZの元にリストされている)があり,これはしばしば部分的にサポートされているが,他のより親切なタイムゾーンの指定法がある.

ほとんどすべての R プラットフォームは最初 Arthur David Olson によりそして今はIANA で保守されているタイムゾーンのデータベースを利用している.そこではタイムゾーンの好まれる参照方法は位置(典型的には都市)を使うものである.例えばEurope/London,伝統的な America/Los_Angeles, Pacific/Easter.EST5EDTや GBのような幾つかの表記もまた許される. (これらの表記の幾つかは期待されるものと異なる可能性があることを注意する:特に EST はカナダで使われるサマータイム無しのタイムゾーンで, EST5EDT でも(オーストラリアの) Eastern Standard Time でもない.) この指定は蓄積されたゾーン情報を与えるファイルへのパスの先頭にオプションのコロンを持っても良い (そして上の例は全てシステム固有の位置のファイルである).より詳細はhttp://www.twinsun.com/tz/tz-link.htm と参考文献を見よ.便宜上1970年からユニークなタイムゾーン履歴を持つ地域はデータベース中で特別な名前を持つが,異なる過去の履歴を持つものはそうではない.各タイムゾーンは時間の整形で使われる一つ又は複数 (DSTに対しては二番目)の省略形を持つ.

使用される省略形は年と共に変化してきている:例えばフランスは 1891年から1911年は‘PMT’ (‘パリ平均時間’)を使い, ‘WET/WEST’ up to 1940 and ‘CET/CEST’ from 1946. (ほとんどすべてのタイムゾーンでは1970年以来安定している.) POSIX標準はタイムゾーン毎に一つ又は二つの省略形を認めるので,現在の省略形が昔使われていたものである可能性がある.

関数 OlsonNamesは現在のシステムにある Olson/IANAデータベースが知っている名前を返す.ファイルシステム中のシステム固有の位置は変化する,例えば ‘/usr/share/zoneinfo’(Linux, OS X, FreeBSD), ‘/usr/share/lib/zoneinfo’ (Solaris, AIX), . . .等.そのディレクトリの下にタイムゾーン名(しかし例えば EST5EDTは無い)として知られている位置をリストする ‘zone.tab’のような名前のファイルが恐らくある:これは OlsonNamesで読み込まれる. https://en.wikipedia.org/wiki/Zone.tabも見よ.

Rがオプション ‘--with-internal-tzcode’付きでコンフィギュア (OS XとWindowsでは既定:Solaris では推奨)されると, file.path(R.home("share"), "zoneinfo") にあるデータベースが既定で使われる:そのディレクトリ中のファイル ‘VERSION’はバージョンを示す.環境変数 TZDIRは異なった ‘zoneinfo’ディレクトリを指示することに使える:

Page 580: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

580 toString

これはまたある種の OS,例えば Linux,ではネイティブなサービスとしてサポートされている.

殆どのプラットフォームは ‘GMT+n’ と ‘GMT-n’ の形式のタイムゾーンをサポートしている.これは UTCからの固定オフセットを意味している(従って DSTは無い).予想外かもしれないが(しかし ‘PST8PDT’のような名前とは一貫性がある),負のオフセットは UTCの前(西側)を意味し,正のオフセットは UTCの後(東側)を意味する.

法定のタイムゾーンの制定のすぐ前には殆どの人々は彼ら(又は近くの町の)の経度に基礎を持つ時間を使っており,‘ローカル平均時間’と呼ばれデータベース中では ‘LMT’と省略される:多くの都市では標準時間に移る前にはこれが特定の名前で成文化されていた.例えばパリは1891年にその LMTを‘パリ平均時間’としており(フランス本土を通じてで使われた)そして1911年に ‘GMT+0’に移行した.

Note

2007年以来,エネルギー節約を狙ったDSTへの移行のタイミングの変更に関する相当な混乱があった.これらはしばしば短い通告でありタイムゾーンのデータベースは更新され無い可能性がある. (モロッコは2013年にDSTの終了時期の変更を前日に布告し,北朝鮮は2015年に変更に関する不正確な情報を一週間前に与えた.)

大・小文字を区別しないファイルシステムを持つプラットフォームでは,タイムゾーン名は大・小文字を区別しない.他のプラットフォームでは区別したりしなかったりするため,例えば "gmt"はある種のプラットフォームでは適正で,他のプラットフォームではそうではない.

置き換えがされている場合を除き,タイムゾーンの操作は OSのサービスであり,置き換えがされていても第三者のデータベースが使われ更新出来る(‘タイムゾーン名’の節を見よ).不正確な結果は決して Rの問題ではないので,それについて Rを責めることが無いようにお願いしたい.

See Also

Sys.time, as.POSIXlt.

広範囲なリンクのセットについては https://en.wikipedia.org/wiki/Time_zoneと https://www.twinsun.com/tz/tz-link.htm.

Examples

Sys.timezone()

str(OlsonNames()) ## 数百の名前

toString Convert an R Object to a Character String

Description

これは formatに対するヘルパー関数で, Rオブジェクトを記述する一つの文字列を生成する.

Page 581: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

trace 581

Usage

toString(x, ...)

## Default S3 method:toString(x, width = NULL, ...)

Arguments

x 変換されるオブジェクト.

width 最大の欄幅に対する提案.値 NULL又は 0は最大無しを意味する.受け入れられる最少値は 6で,より小さな値は 6とされる.

... メソッドへ・から渡されるオプション引数.

Details

これは総称的関数でそれに対するメソッドを書くことが出来る:ここでは既定のメソッドだけを説明する.殆どのメソッドは結果の最大表示幅(nchar(type = "width")で測られた)を指示する width引数を尊重すべきである.

既定メソッドは最初 xを文字列に変換し,それから ", "で分離された要素に連結する.もし widthが与えられ NULLでないと,既定のメソッドは,もし結果全体が width文字以上を使うと, .... を加えた結果の最初の width - 4文字を返す.

Value

長さ1の文字列ベクトルが返される.

Author(s)

Robert Gentleman

See Also

format

Examples

x <- c("a", "b", "aaaaaaaaaaa")toString(x)toString(x, width = 8)

trace Interactive Tracing and Debugging of Calls to a Function or Method

Description

traceの呼び出しは任意の関数中の選ばれた場所にデバッギングコード(例えば browserや recover への呼び出し) を挿入することを許す.untrace の呼び出しはトレースをキャンセルする.指定されたメソッドは関数への全て呼び出しをトレースすることなしに同じようにトレースできる.トレースコードは任意の R 表現で良い.トレースはtracingStateを呼び出すことで大局的に一時的に停止できる.

Page 582: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

582 trace

Usage

trace(what, tracer, exit, at, print, signature,where = topenv(parent.frame()), edit = FALSE)

untrace(what, signature = NULL, where = topenv(parent.frame()))

tracingState(on = NULL).doTrace(expr, msg)returnValue(default = NULL)

Arguments

what トレースしたりトレースを中止する関数の名前 (引用化されたりされなかったりする).一つ以上の引数を持つ untraceや traceに対して,一つ以上の引数を引用化形式で与えることが出来,そして同じアクションが各々に対して適用できる.

tracer 関数か未評価の表現式.関数の呼び出しや表現式の評価が共に呼び出しの始めや,引数 atで指示される呼び出し中の各ステップの前に行われる.詳細の節を見よ.

exit 関数か未評価の表現式.関数の呼び出しや表現式の評価が関数の終了時に行われる.詳細の節を見よ.

at オプションの数値ベクトル化リスト.もし提供されると tracer は関数本体の対応するステップの丁度手前で呼び出される.詳細の節を見よ.

print もし TRUE (既定)ならば,任意のトレース表現式が評価される前に説明的な一行がプリントされる.

signature もしこの引数が提供されると,それは関数 whatに対するメソッドのシグネチャでなければならない.この場合関数自体ではなくメソッドがトレースされる.

edit 関数内のループ内部でのトレースのような複雑なトレースに対しては,関数本体を編集して希望する呼び出しを挿入する必要がある.もしそうなら,edit を TRUE にするか使いたいエディタの名前にして提供する.すると trace()は editを呼び出し編集後に関数のバージョンを使う.追加の情報は詳細節を見よ.

where トレースする関数をどこで探すか:既定では traceへの呼び出しのトップレベル環境.

この引数の重要な用法は名前空間を持つパッケージから呼び出された関数のトレースである.現在の名前空間の機構は呼び出される関数を移入する (基本パッケージ中の関数を例外として).呼び出されている関数はトップレベルからみられるオブジェクトと同じものではない(一般に移入されたパッケージは付加すらされない).従って正しいバージョンが使われていることを確認する必要がある.これを行う方法は名前空間中の関数に where引数を設定することである.そうするとトレースの計算はその関数の環境を探す (それは対応するパッケージの名前空間である). (これは微妙であるが,ここでのセマンティックスは Rで名前空間がどのように動作するかの中心にある.)

on 論理値;サポート関数 tracingStateはトレースが大局的にオンであれば TRUE,さもなければ FALSEを返す.これらの一つ又は他の値の引数は状態を設定する.もしトレース状態が FALSEならばトレース行動のどれもが実際には起きない(例えば,デバッグ関数がデバッグの間中トレースを中断するために使われる).

Page 583: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

trace 583

expr, msg サポート関数 .doTraceへの引数で,それの呼び出しは修正された関数やメソッドの中に挿入される: expr はトレース行動(browser() の呼び出し等)で, msgはトレース行動が起きる箇所を指定する文字列である.

default もし returnValueが返り値を見つけられなかった時 (たとえば関数が正常終了せずエラーで終了),代わりに defaultが返される.

Details

trace関数は関数(又は signatureが提供されればメソッド)の改訂版を構成することで動作し,オリジナルが見つかった場所に新しいオブジェクトを付値する.もし what引数だけが与えられると,トレースをプリントする一行が関数への各呼び出しを生成する(traceの初期バージョンと後方互換).

traceで構成されるオブジェクトは "function"を拡大するクラスからのもので,オリジナルのトレース無しのバージョンを含む. untraceの呼び出しはこのバージョンを再付値する.

もし引数 tracerか exitが関数の名前であれば,トレース表現式は引数無しのその関数の呼び出しである.これは最も簡単で普通のケースであり,関数 browserと recoverが最もありそうな候補である;前者はトレースされる関数のフレーム中でブラウズし,後者は任意の現在アクティブな呼び出し中のブラウズを許す.

tracerや exit引数は(quoteや substituteへの呼び出しが返すような)未評価の表現式でも良い.この表現式自体がトレースされる関数に挿入されるので,それは典型的にトレースされる関数中の引数や局所オブジェクトを含む.この形式の表現式は,もしある条件が適用された時にやり取りしたければ有用である(そしてこの場合恐らく traceへの呼び出し中にもまた print = FALSEを補いたくなるであろう).

at 引数が与えられると,それは関数本体中の副ステップを参照する整数のベクトルで良い(これは関数の本体が { ...} に囲まれているときにだけ動作する. ) この場合tracerは項目に対して呼び出されず,代わりに at中にリストされた各ステップの評価のちょうど前に呼び出されず.(ヒント:関数のプリントバージョン中のステップを数えることを試みたくなければ,代わりに関数 f中のステップに関連した数を得るためにas.list(body(f))を眺める.)

at引数はまた整数ベクトルのリストでも良い.この場合,各ベクトルは関数の別のステップ中に入れ子になったステップを参照する.例えば at = list(c(3,4))は関数の三番目のステップの四番目のステップのちょうど前にトレース関数を呼び出す.

setBreakpoint (パッケージ utilsから)は別の選択肢であり trace(...., at, ...) を呼び出す.

exit引数は on.exitの処理中に呼び出される.on.exit表現式中には実験的な returnValue()関数が関数により返され用途する値を得るために呼び出すことが出来る.この関数を他の状況で呼び出すと結果は未定義である.

exit引数中の固有の制限は,関数自体が add = FALSE (既定値)で on.exitを使っているときには動作しないことである.なぜなら既存の呼び出しが traceにより与えられるものを上書きするからである.

トレースは入れ子にならない.traceへの任意の呼び出しは先の関数やメソッドのトレース用バージョンを置き換え(下で議論する編集用バージョンを除く),そして untraceは常にトレース無しのバージョンを回復する. (トレースの入れ子を許すのは多すぎる混乱と,うっかりトレース用バージョンを後に残す可能性がある.)

もし edit引数が間に untraceの呼び出し無しに同じ関数に繰り返し使われると,先に編集されたバージョンは保存される.もし先のトレース全てを捨て去りそれから編集したければ,次の traceの呼び出しの前に untraceを呼び出す.編集は自動的なトレースと

Page 584: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

584 trace

結びつけることが出来る;単に tracerのような他の引数を与えるか,同じく引数 editを与える.edit = TRUE引数は既定のエディタを使う (editを見よ).

基本パッケージからのプリミティブ関数(組み込みでスペシャル)のトレースが出来るが,特殊な機構によってだけであり情報が非常に少ない.プリミティブ関数のトレースは引数 . . . (だけ)を持つ関数で置き換えられる.僅かな情報が得られるが多くはない.プリミティブ関数に traceが使われると警告が出る.

関数のトレースバージョンを関数が由来した場所に保存する作業は,もしトレースされる関数がセッションイメージに保存されると,トレース作業を一つのセッションから他のセッションへ持ち込むことを意味する. (次のセッションで untraceはトレースを取り除く.)一方で,大局的環境ではなくパッケージ中にあった関数はイメージ中に保存されないので,トレースはそうした関数に対してはそのセッションで終了する.

メソッドのトレースは基本的には関数のトレースと正に類似しているが,トレースされたバージョンは直接の付値ではなく setMethodへの呼び出しとして保存され,従ってuntraceの呼び出し後のトレース無しのバージョンも同様である.

ここで解説された traceのバージョンは S-plusのバージョンと多く互換性があるが,両者は全く異なった機構で動作する. S-Plusの traceはセッションのフレームを使用し,トレースが一つのセッションから他のセッションに決して持ち越せないような結果を持つ(Rはセッションフレームを持たない).別の関連する差異は traceとは直接には関係しない.S-Plusのブラウザはブラウズされているフレームへの変更を許し,変更はブラウザが終了後も残留する. Rのブラウザは変更を許すが,変更はブラウザが終了する時消え去る. S-Plusのバージョンは対話的にコードの変更を実験できるが,Rのバージョンでは出来ないという点で関係する.(将来のバージョンは Rに対する ‘自滅的’なブラウザを含むかもしれない.)

Value

簡単なバージョンでは(丁度最初の引数) traceは不可視の NULLを返す.さもなければトレースされた関数の名前.関連する結論は実行される付値.

untraceは関数名を不可視で返す.

tracingStateは現在の大局的なトレース状態を返す,そして可能性としてそれを変更する.

on.exit処理の最中に呼び出されると,returnValueは終了関数が返そうとしている値を返す.他の状況での挙動は未定義である.

Note

trace()の使用は概念的に debugの一般化であり,別個に実装され,tracerや exit引数を使い browserを呼び出す,

関数名を除く任意の引数を含む関数のトレースのバージョンは methodsパッケージを必要とする. (なぜならそれはトレースされる関数のバージョンを保管しそして再保管する特別なクラスのオブジェクトを使うからである).

もしメソッドの選択適用が現在未適用ならば,traceはメソッドの名前空間をロードするが,メソッドのパッケージを searchリスト上に置くことはない.

References

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

Page 585: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

trace 585

See Also

最もありそうなトレース関数である browserと recover;同様に一般的な表現式を構成する quoteと substitute.

Examples

require(stats)

## 非常に簡単な使用trace(sum)hist(rnorm(100)) # sum() への約 3-4 回の呼び出しを示すuntrace(sum)

## power.t.test() の内部からどのように pt() が呼び出されているかif(FALSE)

trace(pt) ## 20回の呼び出し,しかしもっと見たい:trace(pt, tracer = quote(cat(sprintf("tracing pt(*, ncp = %.15g)\n", ncp))),

print = FALSE) # <- 典型的な特例を示さないpower.t.test(20, 1, power=0.8, sd=NULL) ##--> ncp による根の発見を示す:untrace(pt)

f <- function(x, y) {y <- pmax(y, 0.001)if (x > 0) x ^ y else stop("x must be positive")

}

## 関数 f の開始と終了時にブラウザを呼び出すようにアレンジtrace("f", quote(browser(skipCalls = 4)),

exit = quote(browser(skipCalls = 4)))

## 代わりに条件付きであるデータを付値し,そしてそれから## 終了時にブラウズするが,しかしその時だけ.その他では煩わされたくない

trace("f", quote(if(any(y < 0)) yOrig <- y),exit = quote(if(exists("yOrig")) browser(skipCalls = 4)),print = FALSE)

## stop() が呼び出される直前にブラウザーを起動.## 最初にステップ数を見出す

as.list(body(f))as.list(body(f)[[3]])

## そしてそこでブラウザを呼び出す

trace("f", quote(browser(skipCalls = 4)), at = list(c(3,4)))

## ユーティリティ関数をトレースする,recover を使うので## 呼び出し関数の中もブラウズ出来る

trace("as.matrix", recover)

## トレースを停止

Page 586: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

586 traceback

untrace(c("f", "as.matrix"))

## Not run:## パッケージ nml からの関数 lm() への呼び出しをトレース## (関数 nlme はそのパッケージ中にあり,パッケージは## 名前空間を持つので,lm の正しいベージョンを得るためには## where= argument が使われなければならない)

trace(lm, exit = recover, where = nlme)

## End(Not run)

traceback Print Call Stacks

Description

既定では traceback()は最後の未把握のエラーの呼び出しスタックをプリントする,つまりエラーに至る呼び出しの列である.これは特定出来ないエラーメッセージを持つエラーが起きた時役に立つ.これはまた現在のスタックや逆構文解析された呼び出しの任意のリストをプリントするのに使える.

Usage

traceback(x = NULL, max.lines = getOption("deparse.max.lines"))

Arguments

x NULL (既定は .Traceback)を意味する.または現在のスタック中でスキップする呼び出し回数,又は逆構文解析された呼び出しのリスト又は対リスト.詳細を見よ.

max.lines 呼び出し毎にプリントされる行の最大数.既定では制限なし.

Details

既定の表示は .Traceback中の逆構文解析された呼び出しのリストとして保管された最後の未把握エラーのスタックのものであり, tracebackがそれをわかりやすい形でプリントする.逆構文解析された呼び出しのリストは常に全ての関数呼び出しと全ての(.Callのような)外部関数呼び出しを含む:もしプロファイリングが進行中ならこれはあるプリミティブな関数への呼び出しを含む. (組み込み関数への呼び出しは含まれるが,特殊関数へのそれは含まれない.)

tryや tryCatchによって補足されたエラーはトレースバックを生成しないので,プリントされるものは最後の未把握のエラーに対するもので,必ずしも最後のエラーに対するものではない.

もし xが数値なら,スタックの先頭にある x項目をスキップして現在のスタックがプリントされる.例えば options(error = function() traceback(2))は traceback()への呼び出しとそれを呼び出したエラー関数をスキップしてエラー時のスタックをプリントする.

さもなければ,x は逆構文解析された呼び出しのリストか対リストであると仮定され,同じように表示される.

Page 587: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

tracemem 587

Value

traceback()は逆構文解析された呼び出しスタックを最深の呼び出しが最初になるようにプリントし,それを不可視で返す.呼び出しは複数行にプリントされるかもしれず,各呼び出しに対する最初の行はフレーム番号でラベルが付く.プリントされる行数はmax.linesを使って制限できる.

警告

.Tracebackがどこに保存されるかまたそれが可視かはどこにも文章化されていない.これは将来変更されるかもしれない.

References

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

Examples

foo <- function(x) { print(1); bar(2) }bar <- function(x) { x + a.variable.which.does.not.exist }## Not run:foo(2) # 不思議なエラーを与えるtraceback()## End(Not run)## 2: bar(2)## 1: foo(2)bar## 嗚呼,これが犯人 ...

## これはエラー発生時にスタックのトレースをプリントするoptions(error = function() traceback(2))

tracemem Trace Copying of Objects

Description

この関数は内部コードがオブジェクトをコピーする度にメッセージがプリントされるようにオブジェクトをマークする.これは Rの予測困難なメモリ使用の主因である.

Usage

tracemem(x)untracemem(x)retracemem(x, previous = NULL)

Arguments

x Rオブジェクトで,関数,環境,NULLでない.

previous tracememか retracememにより返される値.

Page 588: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

588 tracemem

Details

オブジェクトを何もトレースしていなくても Rの実行を少し遅くするため,この機能はオプションでコンパイル時に決定される. tracememと untracememは Rがメモリプロファイル機能付きでコンパイルされていないとエラーを与える; retracememはエラーを与えない(従って開発中にコードの中に残しておける).

これは CRANの OS XとWindows用に構築された Rでは使用可能とされている.

オブジェクトがトレースされる時, C関数 duplicateによるオブジェクトのコピーは標準出力にメッセージを生成する.引数を .C又は .Fortranに渡すための型変換とコピーの際も同様である.

メッセージは文字列 tracemem,コピーされるオブジェクトと強制変換されるオブジェクトに対する特定のための文字列,そしてどこで重複が起きたかを示すスタックのトレースから構成される. retracemem()は変数が以前の変数のコピーと考えるべきかどうか(例えば,添字操作の後)を指示するために使われる.

メッセージは tracingStateで無効に出来る.

traceと衝突するため関数をトレースすることはできない.重複しないため NULL,環境,予約,弱参照,又は外部ポインターオブジェクトをトレースすることは役に立たない,

これらの関数はプリミティブである.

Value

トレースの出力中のオブジェクトを特定するための文字列 (角括弧に挟まれた16進数のアドレス),又は(不可視の) NULL.

See Also

これがこの構築された Rに対して使用可能とされているかどうかを見るにはcapabilities("profmem").

trace, Rprofmem

http://developer.r-project.org/memory-profiling.html

Examples

## Not run:a <- 1:10tracemem(a)## b と a はメモリを共有するb <- ab[1] <- 1untracemem(a)

## lm 中のコピー:R <= 2.15.0d <- stats::rnorm(10)tracemem(d)lm(d ~ a+log(b))

## f はコピーでなくトレースされないf <- d[-1]f+1## f が d のコピーとしてトレースすべきかどうかを指示するretracemem(f, retracemem(d))f+1

Page 589: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

transform 589

## End(Not run)

transform Transform an Object, for Example a Data Frame

Description

transformは総称的関数である.それは—少なくとも現在は—データフレームに対してだけ意味のある動作をする. transform.defaultは可能ならばその最初の引数をデータフレームに変換しtransform.data.frameを呼び出す.

Usage

transform(`_data`, ...)

Arguments

_data 変換されるべきオブジェクト.

... tag=valueの形式の追加引数.

Details

transform.data.frame への ... 引数はタグ付きベクトル表現式で,データフレーム_dataの中で評価される.そしてマッチするものに対し値が _data中の対応する値で置き換えられる.他は _dataに付け加えられる.

Value

_dataの修正された値.

警告

これは対話的使用のための便利関数である.プログラミングのためには標準の部分操作算術関数を使うほうが好ましく,特に引数 transformの非標準的評価は予測できない結論を持つことがある.

Note

もしある値が適切な長さのベクトルでなければ結果は自業自得!

Author(s)

Peter Dalgaard

See Also

より柔軟なアプローチは within. subset, list, data.frame

Page 590: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

590 Trig

Examples

transform(airquality, Ozone = -Ozone)transform(airquality, new = -Ozone, Temp = (Temp-32)/1.8)

attach(airquality)transform(Ozone, logOzone = log(Ozone)) # 少し面白い ...detach(airquality)

Trig Trigonometric Functions

Description

これらの関数は当然三角関数を表す.それぞれ cosine, sine, tangent, arc-cosine, arc-sine,arc-tangent,そして2引数の arc-tangentを表す.

cospi(x), sinpi(x), そして tanpi(x) は cos(pi*x), sin(pi*x), そして tan(pi*x) を計算する.

Usage

cos(x)sin(x)tan(x)

acos(x)asin(x)atan(x)atan2(y, x)

cospi(x)sinpi(x)tanpi(x)

Arguments

x, y 実数値もしくは複素数値ベクトル.

Details

2変数アークタンジェント atan2(y, x)は x軸と原点から (x, y)を結ぶベクトル間の角度を与える.つまり正の引数に対しては atan2(y, x) == atan(y/x).

標準的バージョンでは角度単位はラジアンで度ではない (つまり直角は π/2)で, cospiに対しては ‘半回転’等.

cospi(x), sinpi(x)そして tanpi(x)は 0.5の倍数に対しては正確である.

atan2以外は内部総称的でプリミティブな関数である:メソッドを個別に,また Math経由でグループ総称的に書くことが出来る.

Value

tanpi(0.5)は NaNになる.少数部分 0.5を持つ他の入力も同様である.

Page 591: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

trimws 591

複素数値

逆三角関数に対してはブランチカットは Abramowitz and Stegun, figure 4.4, page 79で定義されているものとされる.

asin と acos に対しては二つのカットがあり,双方が実軸に沿う: (−∞,−1] そして[1,∞)である.

atan に対しては二つのカットがあり,双方が純虚数軸に沿う: (−∞i,−1i] そして[1i,∞i)である.

カット上の実際の挙動は C99標準に従い,端点を反時計方向に連続的に巡ることを要求する.

cospi, sinpi,そして tanpiに対する複素数値引数はまだ実装されていない.

S4メソッド

atan2以外は総称的関数である.メソッドを個別に,また Math経由でグループ総称的に書くことが出来る.

References

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

Abramowitz, M. and Stegun, I. A. (1972). Handbook of Mathematical Functions. New York:Dover.Chapter 4. Elementary Transcendental Functions: Logarithmic, Exponential, Circular and Hyper-bolic Functions

cospi, sinpi,そして tanpiはドラフト C11拡張 ISO/IEC TS 18661 (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1785.pdf).

Examples

x <- seq(-3, 7, by = 1/8)tx <- cbind(x, cos(pi*x), cospi(x), sin(pi*x), sinpi(x),

tan(pi*x), tanpi(x), deparse.level=2)op <- options(digits = 4, width = 90) # 体裁の良い書式化のためhead(tx)tx[ (x %% 1) %in% c(0, 0.5) ,]options(op)

trimws Remove Leading/Trailing Whitespace

Description

文字列から先頭又は末尾にある空白を取り除く.

Usage

trimws(x, which = c("both", "left", "right"))

Page 592: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

592 try

Arguments

x 文字列ベクトル.

which 先頭と末尾双方(既定)の空白を取り除くか,又は先頭だけ("left")か末尾だけ("right")かを指示する文字列.短縮できる.

Details

可搬性のために‘空白’とは文字クラス [ \t\r\n] (スペース,水平タブ,行送り,キャリッジリターン)とされる.

Examples

x <- " Some text. "xtrimws(x)trimws(x, "l")trimws(x, "r")

try Try an Expression Allowing Error Recovery

Description

tryは失敗するかもしれない表現式を実行するラッパで,ユーザのコードのエラー回復処理を許す.

Usage

try(expr, silent = FALSE)

Arguments

expr 試行する R表現式.

silent 論理値:エラーメッセージの報告を抑制するか?

Details

tryは表現式を評価し,評価中に起きた任意のエラーを補足する.もしエラーが起きれば, options("show.error.messages") が偽か呼び出しが silent = TRUE を含まない限り,メッセージは stderrコネクションに出力される.エラーメッセージはまたバッファに蓄積され geterrmessageで回収できる. (エラー時に返される値はエラーメッセージを含むのでこれは必要というわけではない.)

tryは tryCatchを使って実装されている;プログラミング用には try(expr, silent = TRUE)の代わりに tryCatch(expr, error = function(e) e) (もしくは他の簡単なエラー処理関数)のようなものがより効率的で柔軟かもしれない.

Value

もし exprがエラー無しに評価されれば表現式の値であるが,エラーメッセージを含むクラス "try-error"の不可視オブジェクトで,もしそれが失敗すれば属性 "condition"のようなエラーコンディションである.

Page 593: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

typeof 593

See Also

エラーハンドラーの設定とエラーメッセージのプリントの抑制には options;最後のエラーメッセージの回収には geterrmessage.背景にある tryCatchはエラーの捕捉と処理のより柔軟な手段を提供する.

パッケージ tools中の assertConditionは関連しておりテストに役に立つ.

Examples

## この例は example(try) では正しく動作しないが## 貼り付けると正しく動作するoptions(show.error.messages = FALSE)try(log("a"))print(.Last.value)options(show.error.messages = TRUE)

## 別法,print(try(log("a"), TRUE))

## シミュレーションを実行し,上手くいった結果だけを保存set.seed(123)x <- stats::rnorm(50)doit <- function(x){

x <- sample(x, replace = TRUE)if(length(unique(x)) > 30) mean(x)else stop("too few unique points")

}## 別法 1res <- lapply(1:100, function(i) try(doit(x), TRUE))## 別法 2## Not run: res <- vector("list", 100)for(i in 1:100) res[[i]] <- try(doit(x), TRUE)## End(Not run)unlist(res[sapply(res, function(x) !inherits(x, "try-error"))])

typeof The Type of an Object

Description

typeofは任意のオブジェクトの(Rの内部)型か保管モードを決定する.

Usage

typeof(x)

Arguments

x 任意の Rオブジェクト.

Page 594: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

594 unique

Value

文字列.可能な値は ‘src/main/util.c’ 中の構造体 TypeTable にリストされている.現在の値はベクトル型 "logical", "integer", "double", "complex", "character", "raw" そして "list", "NULL", "closure" (関数), "special"そして "builtin" (基本関数と演算子),"environment", "S4" (ある種の S4オブジェクト)そしてユーザレベルでは見かけることが先ず無い他のもの("symbol", "pairlist", "promise", "language", "char", "...", "any","expression", "externalptr", "bytecode"そして "weakref").

See Also

mode, storage.mode.

オブジェクトが S4クラスかどうかを決定するには isS4.

Examples

typeof(2)mode(2)

unique Extract Unique Elements

Description

uniqueは xのようなベクトル,データフレーム又は配列を返すが,重複した要素/行は除かれる.

Usage

unique(x, incomparables = FALSE, ...)

## Default S3 method:unique(x, incomparables = FALSE, fromLast = FALSE,

nmax = NA, ...)

## S3 method for class 'matrix'unique(x, incomparables = FALSE, MARGIN = 1,

fromLast = FALSE, ...)

## S3 method for class 'array'unique(x, incomparables = FALSE, MARGIN = 1,

fromLast = FALSE, ...)

Arguments

x ベクトル,データフレーム,配列,又は NULL.

incomparables 比較不可能な値のベクトル. FALSEは特殊値で,全ての値が比較可能なことを意味し,恐らく既定以外のメソッドに対して受け入れられる唯一の値である.これは xと同じ型に内部的に強制変換される.

fromLast 重複は最後から考慮すべきかどうかを指示する論理値.つまり同一の値の最後(又は最右翼)を残す.これは namesや dimnamesに対してだけ問題になる.

Page 595: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

unique 595

nmax 期待されるユニークな項目の最大値(1以上). duplicatedを見よ.

... 特別なメソッドに対する引数.

MARGIN 固定される配列マージン:単一の整数.

Details

これは総称的関数でありベクトル,データフレームそして配列に対するメソッドをもつ(行列を含む).

配列メソッドは MARGIN で指定される次元の各要素に対して残りの次元が前の要素(行主導の順序で)と同一であるかどうかを計算する.これは最も普通にはユニークな行(既定)や列(MARGIN = 2で)を見つけるために使われる.

Unix命令 uniqとは異なり,これは重複した要素/行を除き単に繰り返される要素/行ではない.つまり,ある要素はもしそれが任意の先にある要素に等しければ除き,単にそれが直前のものに等しい等しい場合だけではない.(後者の場合については rleを見よ).

欠損値は等しいと見做されるが,NaNは NA_real_に等しくない.文字列はもしそれらが異なったエンコーディングを持つが UTF-8に翻訳された時一致すれば等しいと見做される.

incomparables中の値は決して重複するとマークされない.これはかなり小さな値のセットに対して使われることを念頭に置いており,非常に大きなセットに対しては効率的ではない.

一つ以上の列を持つデータフレーム,又は1以上の長さの次元を比較する時の配列や行列に対して使われると,これは文字列表現の同等性をテストする.これは浮動点小数の正確な同等性を無思慮に信頼する人々を発見する!

文字列はもし入力のどれかが "bytes" (Encodingを見よ)とマークされていればバイト列として比較される.

Value

ベクトルに対しては xと同じ型のオブジェクトであるが,重複した要素の各々に対して唯一つのコピーを持つ.属性はコピーされない(従って結果は名前を持たない).

データフレームに対しては,同じ列だが可能性としてより少ない行を持つデータフレームが返される(行名はユニークな行の最初に登場したものの行名を持つ).

行列や配列は [, drop = FALSE]によって部分抽出されるので,次元や次元名は適切にコピーされるが,結果は常に xと同じ数の次元を持つ.

警告

これをリストに使うと遅い可能性がある.特に要素が原子的でない(vectorを見よ)場合や属性だけが異なる場合がそうである.最悪のケースの計算量は O(n2)になる.

References

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

See Also

重複した要素の添字を与える duplicated.

Unixの命令 uniq -cに同値な rle.

Page 596: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

596 unlink

Examples

x <- c(3:5, 11:8, 8 + 0:5)(ux <- unique(x))(u2 <- unique(x, fromLast = TRUE)) # 異なった順序stopifnot(identical(sort(ux), sort(u2)))

length(unique(sample(100, 100, replace = TRUE)))## 近似的に 100(1 - 1/e) = 63.21

unique(iris)

unlink Delete Files and Directories

Description

unlinkは xで指定されるファイルやディレクトリを削除する.

Usage

unlink(x, recursive = FALSE, force = FALSE)

Arguments

x 削除されるファイルやディレクトリの名前を持つ文字列ベクトル.ワイルドカード(普通 ‘*’と ‘?’)が許される.

recursive 論理値.ディレクトリを再帰的に削除するか?

force 論理値.ファイルやディレクトリの削除を許すためにパーミッションを変更するか(もし可能なら)?

Details

チルド展開(path.expandを見よ)が xについてなされる.

もし recursive = FALSEならディレクトリはたとえ空であっても削除されない.

殆どのプラットフォームでは‘ファイル’はシンボリックリンク,fifo そしてソケットを含む.R 2.15.0以前では unlink(x, recursive = TRUE)はシンボリックリンクのターゲットであるディレクトリの中身を削除した:現在ではシンボリックリンクだけを削除する(unlink(x, recursive = FALSE)が常にそうするように).

ワイルドカード展開は Sys.globの内部コードで行われる.ワイルドカードはファイル名の先頭の ‘.’ にマッチせず,ファイル ‘.’ と ‘..’ は決して削除されない.ワイルドカードはシステムがそれをサポートする時だけ展開される.殆どのシステムは ‘*’と ‘?’ だけでなくまた ‘[a-z]’のような文字クラスをサポートする(自分の OSのシステムコールglobの manページを見よ).メタ文字 * ? [は Unixのファイル名に登場することが出来,これがそうしたファイルを unlinkで削除することを困難にする(file.removeを見よ)が,メタ文字をバックスラッシュでエスケープ化すれば普通上手くいく.もしメタ文字がどれともマッチしなければそれはあるがままの文字と見做される.

recursive = TRUEは全てのプラットフォームでサポートされていないかもしれない.その時は警告付きで無視される:しかしながら現在知られている例はない.

Page 597: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

unlist 597

Value

成功には 0,失敗には 1で不可視である.存在しないファイルを削除しないことや,もし recursive = FALSEならばディレクトリを削除出来ないことは失敗ではない.しかしながら x中の欠損値は失敗と見做される.

References

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

See Also

file.remove.

unlist Flatten Lists

Description

リスト構造 xをあたえた時,unlistは x中の全ての原子的要素を含むベクトルを作ることでそれを簡略化する.

Usage

unlist(x, recursive = TRUE, use.names = TRUE)

Arguments

x Rオブジェクト.典型的にはリスト化ベクトル.

recursive 論理値.非リスト化操作は xのリスト成分にも適用すべきか?

use.names 論理値.名前を保存すべきか?

Details

unlist は総称的である:特定のクラスのオブジェクトを処理するメソッドを書くことが出来る,InternalMethods を見よ.そして,例えば relistable オブジェクトに対するunlistメソッドを持つ relistに注意しよう.

もし recursive = FALSEならば,関数は x中の最初の第一レベルの項目を超えて再帰的に作用しない.

因子は特別に扱われる.もし xの全てのリストでない要素が因子(又は順序付き因子)ならば要素の因子レベルの集合の合併を水準に持つ因子で,水準は要素の水準集合に登場する順序になる (これは全ての要素が同じ水準集合を持てばそれが結果の水準集合になることを意味する).

xは原子的なベクトルでも良いが,そうすると unlistは役に立つ何も行わず,名前すら捨て去らない.

既定では unlistは x中に存在する名前情報を保とうと試みる.もし use.names = FALSEならば全ての名前情報は捨て去られる.

可能な箇所では非リスト化の過程でリスト要素は同じモードに強制変換されるので,結果はしばしば文字列ベクトルになってしまう.ベクトルは階層 NULL < raw < logical <

Page 598: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

598 unname

integer < double < complex < character < list < expressionで最高位の成分の型に強制変換される:対リストはリストとして扱われる.

リストは(総称的な)ベクトルで,簡略化されたベクトルは依然リストかもしれない (そして変更されないかもしれない).リストのベクトルでない要素 (例えば名前,公式,そして呼び出しのような言語要素)は強制変換されないので,これらを一つ以上含むリストはリストに留まる.(lmによる当てはめの非リスト化の効果は各残差を成分に持つリストである.) unlist(x)はここではエラーにする代わりにベクトルでない xに対しても未変更で xを返すことを注意する.

Value

NULL又は表現式又はリスト成分を含む適当なモードのベクトル.

出力の型は対リストをリストに強制変換した後の階層 NULL < raw < logical < integer <double < complex < character < list < expressionでの最高位の型から決定される.

References

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

See Also

c, as.list, relist.

Examples

unlist(options())unlist(options(), use.names = FALSE)

l.ex <- list(a = list(1:5, LETTERS[1:5]), b = "Z", c = NA)unlist(l.ex, recursive = FALSE)unlist(l.ex, recursive = TRUE)

l1 <- list(a = "a", b = 2, c = pi+2i)unlist(l1) # 文字列ベクトルl2 <- list(a = "a", b = as.name("b"), c = pi+2i)unlist(l2) # リストのまま

ll <- list(as.name("sinc"), quote( a + b ), 1:10, letters, expression(1+x))utils::str(ll)for(x in ll)stopifnot(identical(x, unlist(x)))

unname Remove names or dimnames

Description

Rオブジェクトの名前か次元名属性を取り除く.

Usage

unname(obj, force = FALSE)

Page 599: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

UseMethod 599

Arguments

obj Rオブジェクト.

force 論理値;もし真なら dimnames (名前と行名)がデータフレームからさえ取り除かれる.

Value

objと同じオブジェクトであるが名前や次元名が無い.

Examples

require(graphics); require(stats)

## R-help (14 Oct 1999) の質問への回答:col3 <- 750+ 100*rt(1500, df = 3)breaks <- factor(cut(col3, breaks = 360+5*(0:155)))z <- table(breaks)z[1:5] # 名前がデータよりも大きい ...barplot(unname(z), axes = FALSE)

UseMethod Class Methods

Description

Rはオブジェクト志向風のプログラミングが可能になる単純な総称的関数の機構を持つ.メソッドの選択適用は総称的関数の第一引数のクラスや, UseMethodまたは NextMethodの引数として与えられたオブジェクトに基づいて行われる.

Usage

UseMethod(generic, object)

NextMethod(generic = NULL, object = NULL, ...)

Arguments

generic (組み込み演算子ではない)関数の名前である文字列. UseMethodに対して必要になる.

object UseMethod用:そのクラスが選択適用されるメソッドを決定する決めるオブジェクト.既定値は囲み関数の第一引数.

... 次のメソッドに引き渡される追加引数.

Details

Rのオブジェクトは class属性を持つデータオブジェクトである(そしてこれは is.objectでチェックできる).クラス属性は文字列ベクトルで,オブジェクトがそこから継承するクラスの名前を与える.もしオブジェクトがクラス属性を持たなければそれは暗黙のクラスを持つ.行列と配列はクラス "matrix" または "array" を持ち,これは根底にあるベクトルのクラスを引き継ぐ.殆どのベクトルは mode(x)の結果であるクラスを持

Page 600: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

600 UseMethod

つが,整数ベクトルはクラス c("integer", "numeric")を,そして実ベクトルはクラスc("double", "numeric")を持つ.

UseMethod("fun")を呼び出す関数がクラス属性 c("first", "second")を持つオブジェクトに適用されると,システムは fun.firstと呼ばれる関数を探し,そしてもしそれが見つかるとそれをオブジェクトに適用する.もしそうした関数が見つからなければ,fun.secondという関数が試される.もしクラス名が適当な関数に該当しないと,もしそれが存在すれば関数 fun.defaultが使われるか,エラーになる.

関数 methodsは特定の総称的関数またはクラスに対するメソッドを見つけるのに使うことが出来る.

UseMethodはプリミティブな関数であるが標準的な引数照合を使用する.これはメソッドの選択適用の唯一の手段ではない.なぜなら内部総称的そしてグループ総称的関数があるから. UseMethodは現在の所オブジェクトでない引数に対しても暗黙のクラスに選択適用されるが,他の選択適用手段はそうではない.

NextMethod はネクストメソッドを起動する (総称的関数に与えられたオブジェクトか,もしメソッドが直接起動されるのならば NextMethodを含む関数への第一引数のクラスベクトルによって決定される).通常 NextMethodはただひとつの引数とともに使われるが,もし追加の引数が与えられればそれらはネクストメソッドへの呼び出しを変更する.

NextMethodは UseMethodから呼び出されたメソッド内部からか,内部総称的関数からかを除いて呼びだされるべきではない (InternalGenericsを見よ).特にそれは匿名の呼び出し関数内部では動作しない(例えば get("print.ts")(AirPassengers)).

名前空間は総称的関数に対するメソッドを登録できる.これをサポートするために,UseMethodと NextMethodはメソッドを二つの場所で探す:最初は総称的関数が呼び出された環境中で,それから総称的関数が定義された環境に対する登録データベース(典型的に名前空間)中である.従って総称的関数に対するメソッドは総称的関数への呼び出し環境中で利用可能である必要がある.さもなければ登録されなければならない. (総称的関数が定義された環境中で可視的であるかどうかはどうでも良い.)

技術的詳細

どこかで触れる必要がある幾つかの曖昧な詳細を述べる.これらのコメントは Cham-bers(1992)のそれらと多少異なるであろう. (ドラフト ‘R Language Definition’を見よ.)UseMethodは総称的関数のマッチした引数を持つ新しい関数呼び出しを作る. UseMethodの呼び出し以前に定義された任意の局所変数は保存される(Sとは異なり). UseMethodの呼び出し後の実行文は UseMethodが帰らないので評価されない. UseMethodは二つ以上の引数とともに呼び出すことが出来るが,警告が出て追加引数は無視される.(Sではそれらは完全には無視されない.)もしそれが丁度一つの引数とともに呼び出されると,囲み関数の最初の引数のクラスが objectとして使われる.Sとは異なり,これは引き渡される最初の実際の引数であり,その名前のオブジェクトの現在の値ではない.

NextMethodは次のメソッドに対する特別な呼び出しフレームを作ることで動作する.もし新しい引数が提供されないと,引数は現在のメソッドと数,順序そして名前が同じになるが,それらの値は現在のメソッドと環境中で名前を評価することが予約される.... にマッチする任意の名前付き引数は特別に処理される.それらは同名の既存の引数を置き換えるか,引数リストに追加される.それらは現在の環境への引数として提供されたという予約として引き渡される.(Sはこれを違った風に行う!)もしそれらが現在(もしくは以前の環境で)評価されていたならば評価されたままでとどまる. (これは複雑な話で変更されるかもしれない:ドラフト ‘R Language Definition’を見よ.)

NextMethodに対するメソッドの探索は UseMethodと少し異なる. fun.defaultが見つからなくても必ずしもエラーにならず,探索は総称的関数自体に続く.これは別個の既定メソッドを持たない [のような内部総称的関数を取り扱うためで,もし総称的関数がプリミティブ関数か同名の .Internal関数に対するラッパの時だけ成功する. (プリミティ

Page 601: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

UseMethod 601

ブ関数が既定メソッドとして呼び出されると,引数のマッチングはプリミティブ関数の異なった意味から上で述べたようには動作しない.)

メッソド中には .Generic, .Methodそして .Classのようなオブジェクトが使われる.これらは以下のような選択適用の機構によりメソッドがその中で評価される環境の中で設定される:

1. 呼び出し関数(総称的)に対する文脈を見つける:これはオリジナルの呼び出しに対する未評価の引数を与える.

2. 選択適用に対して使われるオブジェクト(普通引数)を評価し,メソッド(もしかすると既定メソッド)を見つけるかエラーにする.

3. メソッドを評価するための環境を作り,その環境中に特殊な変数(以下を参照)を挿入する.また形式的(また実引数)でない総称的関数の環境中の凡ての変数をコピーする.

4. 引数リストをメソッドの形式的引数にマッチする呼び出しの引数と決める.

.Genericは総称的関数の名前である長さ1の文字列ベクトル.

.Methodはメソッド関数の名前である文字列ベクトル(普通長さ1). (グループ総称 Ops内の関数に対しては長さ2.)

.Classは次のメソッドを見つけるのに使われるクラスの文字列ベクトル. NextMethodは .Classに選択適用で最後に使われた .Classを与える属性 "previous"を加える.そして .Classを選択適用に対して使われたものに沿ってシフトする.

.GenericCallEnvと .GenericDefEnvはそれぞれ総称的とされた呼び出しと総称的関数を定義する環境である. (後者は総称的関数に対して登録されたメソッドを見つけるために使われる.)

.Classは総称的関数が呼び出された時設定されることを注意する.そしてもしメソッド中で選択適用された変数のクラスが変更されてもそのままである. .Classを操作してNextMethodが選択適用するメソッドを変更することは可能であるが, ‘これは継承の機構を完全に理解していない限り勧められない’ (Chambers & Hastie, 1992, p. 469).

Note

この機構は S3 (S version 3)と呼ばれている.新しいプロジェクトに対しては,methodsパッケージで提供されるより柔軟で頑健な S4機構を使うことが推奨される.

References

Chambers, J. M. (1992) Classes and methods: object-oriented programming in S. Appendix A ofStatistical Models in S eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.

See Also

ドラフト ‘R Language Definition’.

methods, class, getS3method, is.object.

Page 602: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

602 userhooks

userhooks Functions to Get and Set Hooks for Load, Attach, Detach and Unload

Description

これらの関数はパッケージが付加/除去されたり,名前空間が(アン)ロードされる前に取られるアクションをユーザが設定出来るようにする.

Usage

getHook(hookName)setHook(hookName, value,

action = c("append", "prepend", "replace"))

packageEvent(pkgname,event = c("onLoad", "attach", "detach", "onUnload"))

Arguments

hookName 文字列:フック名.

pkgname 文字列:パッケージ/名前空間の名前.

event 文字列:パッケージに対するイベント.短縮できる.

value 関数又は関数のリスト,もしくは action = "replace" に対してはNULL.

action 取られるアクション.短縮できる.

Details

setHookはユーザが,システム(又はユーザ)関数から呼び出される一連の関数であるフックを登録する一般的な機構を提供する.フックの初期セットはパッケージや名前空間に関するイベントに関連していた:これらのフックは packageEventへの呼び出しで名前が付けられている.

フックを完全に取り去るには setHook(hookName, NULL, "replace")を呼び出す.

R のパッケージが library で付加されるか他の手段でロードされる時,それは初期化コードを呼び出すことが出来る.初期化の途中で呼び出されるパッケージのフック関数に関する説明は .onLoad を見よ.ユーザは setHook() で提供されるフックを使って自分自身の初期化コードを加えることができる.これは呼び出し try の内部でfunname(pkgname, pkgpath)として呼び出される関数である.

イベントの系列はどのフックが定義されているかと,パッケージが付加されているのか単にロードされているのかに依存する.全てのフックが定義されパッケージが付加される場合には,初期化のイベントの順序は次のようになる:

1. パッケージの名前空間がロードされる.

2. パッケージの .onLoad関数が実行される.

3. もし S4メソッドの選択適用がオンならば, setLoadActionで設定された任意のアクションが実行される.

4. 名前空間が封印される.

5. ユーザの "onLoad"フックが実行される.

Page 603: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

userhooks 603

6. パッケージが検索パスに加えられる.

7. パッケージの .onAttach関数が実行される.

8. パッケージの環境が封印される.

9. ユーザの "attach"フックが実行される.

似たような系列(しかし逆向き)がパッケージが取り除かれその名前空間がアンロードされるときに実行される:

1. ユーザの "detach"フックが実行される.

2. パッケージの .Last.lib関数が実行される.

3. パッケージが検索パスから除かれる.

4. ユーザの "onUnload"フックがが実行される.

5. パッケージの .onUnload関数が実行される.

6. パッケージの名前区間がアンロードされる.

Rセッションが終了した時にはパッケージは除かれず名前空間はアンロードされないので,対応するフックは実行されないことを注意しよう.

またユーザのフックはパッケージが検索パス上に無くても実行されるので,例におけるようにパッケージ中のそれらのフックは二重(又は三重)コロン演算子で参照される必要があることを注意しよう.

もし複数のフックが加えられると,それらは普通 getHookで示される順序で実行されるが,"detach"と "onUnload"フックは逆順で実行されるのでパッケージのイベントに対する既定はフックを既存のものの‘内部’に加えることである.

フックは基本パッケージ中の .userHooksEnv環境に‘複雑な’名前で保管される.

Value

getHook関数に対しては関数のリスト(空かもしれない). setHook関数に対しては返り値はない. packageEventに対しては導出されたフック名(文字列).

Note

フックはそれらが修正するイベントの前に設定される必要がある: methodsは起動列の初期に付加され現在 utilsの名前空間をロードするため,標準のパッケージに対してはこれは問題無しとはしない.下の例のようにフックを設定する普通の場所は ‘.Rprofile’ファイル中であるが,これは methodsと utilsに対しては上手く行かない.

See Also

library, detach, loadNamespace.

二重,三重コロン演算子についての議論は :: を見よ.

他のフックを後から加えることが出来る:関数 plot.newと perspは既にそれらを持つ.

Examples

setHook(packageEvent("grDevices", "onLoad"),function(...) grDevices::ps.options(horizontal = FALSE))

Page 604: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

604 utf8Conversion

utf8Conversion Convert Integer Vectors to or from UTF-8-encoded Character Vectors

Description

UTF-8 でエンコードされた文字列ベクトルを整数ベクトルへ変換する.またその逆操作.

Usage

utf8ToInt(x)intToUtf8(x, multiple = FALSE)

Arguments

x 変換されるオブジェクト.

multiple 論理値:一つの文字列ベクトルまたは複数の文字列ベクトルに変換するか?

Details

これらは多バイト文字セットをサポートしないようなプラットフォームを含む任意のロケールで動作する.

Value

ユニコードはそれが含む全てのグリフの名前と番号を定義している:番号はコードポイントと呼ばれる:それらは 0から 0x10FFFFに渡る.

utf8ToIntは UTF-8でエンコードされた長さ 1の文字列をユニコードのコードポイントの整数ベクトルに変換する. R 3.2.1からそれは入力の適正さをチェックし,もしそれが不正なら NAを返す.

intToUtf8はユニコードのコードポイントの数値ベクトルを一つの文字列ベクトル又は一つの文字からなる文字列のベクトルに変換する. (文字一つの文字列からは 0は黙って取り除かれる:さもなければ 0は ""にマップされる.非整数の数値は整数に刈り詰められる.) Encodingは "UTF-8"と宣言される.

入力 NAは出力 NAにマップされる.

Examples

## ある種のロケールとフォントでだけ表示されるintToUtf8(0x03B2L) # ギリシャ語のベータ

utf8ToInt("bi\u00dfchen")utf8ToInt("\xfa\xb4\xbf\xbf\x9f")

Page 605: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

validUTF8 605

validUTF8 Check if a Character Vector is Validly Encoded

Description

Check if each element of a character vector is valid in its implied encoding.

Usage

validUTF8(x)

validEnc(x)

Arguments

x A character vector.

Details

These use similar checks to those used by functions such as grep.

validUTF8 ignores any marked encoding (see Encoding) and so looks directly if the bytes in eachstring are valid UTF-8.

validEnc regards character strings as validly encoded unless their encodings are marked as UTF-8or they are unmarked and the R session is in a UTF-8 or other multi-byte locale. (The checks inother multi-byte locales depend on the OS and as with iconv not all invalid inputs may be detected.)

Value

A logical vector of the same length as x. NA elements are regarded as validly encoded.

Note

It would be possible to check for the validity of character strings in a Latin-1 encoding, but ex-tensions such as CP1252 are widely accepted as ‘Latin-1’ and 8-bit encodings rarely need to bechecked for validity.

Examples

x <-## from example(text)

c("Jetz", "no", "chli", "z\xc3\xbcrit\xc3\xbc\xc3\xbctsch:","(noch", "ein", "bi\xc3\x9fchen", "Z\xc3\xbc", "deutsch)",## from a CRAN check log"\xfa\xb4\xbf\xbf\x9f")

validUTF8(x)validEnc(x) # depends on the localeEncoding(x) <-"UTF-8"validEnc(x)

Page 606: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

606 vector

vector Vectors

Description

vectorは与えられた長さとモードのベクトルを生成する.

総称的な as.vectorはその引数をモード modeのベクトルに強制変換しようと試みる(既定では最も便利なモードのベクトルに変換する):もし結果が原子的なら全ての属性を取り除く.

もし xが指定されたモードで名前以外の属性を持たなければ TRUEを返す.さもなければそれは FALSEを返す.

Usage

vector(mode = "logical", length = 0)as.vector(x, mode = "any")is.vector(x, mode = "any")

Arguments

mode 原子的なモード,"list","expression"又は (vectorを除き) "any"に名前を与える文字列.

length 希望の長さを指定する非負整数. length > .Machine$integer.max であるロングベクトルに対しては,それは型 "double"でなければならない.長さ 1以外の引数を与えるのはエラーである.

x Rオブジェクト.

Details

原子的なモードは "logical", "integer", "numeric" ("double" の同義語), "complex","character"そして "raw"である.

もし mode = "any"なら is.vectorは原子的なモード, listそして expressionに対してTRUEを返す.任意の modeに対して,もし xが名前以外の任意の属性を持てば FALSEを返す. (これは Sと互換性がある.)一方で as.vectorは原子的なモードの結果に対して名前を含む全ての属性を取り除く (しかしモード "list"や "expression"に対しては異なる).

因子はベクトルではない;is.vectorは FALSEを返し,そして as.vectorは mode = "any"に対しては因子を文字列に変換する.

Value

vectorに対しては与えられた長さとモードのベクトル.論理値ベクトルの要素は FALSEに,数値ベクトルの要素は 0へ,文字列ベクトルの要素は ""へ,バイト型ベクトルの要素は nulバイトに,そしてリスト/表現式要素は NULLに初期化される.

as.vectorに対してはベクトル(原子的,リスト型又は表現式).もしそれが原子的モードなら全ての属性が結果から取り除かれるが,リストの結果に対しては一般にそうではない.既定メソッドは 24の入力の型と 12の typeの値を扱う:殆どの強制変換の詳細は文章化されておらず変更される可能性がある.

Page 607: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

vector 607

is.vectorに対しては TRUEか FALSE. is.vector(x, mode = "numeric")は型 "integer"や "double"のベクトルに対して真になり得るが,一方で is.vector(x, mode = "double")は型 "double"のそれらに対しては真であり得る.

as.vector()に対するメソッド

as.vectorに対するメソッドの作者は既定メソッドの慣習に従う必要がある.特に

• 引数 mode は "any", 任意の原子的モード, "list","expression","symbol","pairlist"又は別名 "double"と "name"のどれかで良い.

• 返り値は適当なモードであるべきである.mode = "any"に対しては,これは原子的べクトルかリストを意味する.

• 属性は適切に扱われるべきである:特に結果が原子的なベクトルの時は名前を含む如何なる属性もあるべきではない.

• is.vector(as.vector(x, m), m)は既定の "any"を含む任意のモード mに対して真であるべきである.

Note

as.vectorと is.vectorはパッケージ methods中の形式的クラス "vector"の意味と非常に異なり,従って as(x, "vector")と is(x, "vector")の意味も異なる.

as.vector(x)は is.vector(x)が真ならば必ずしも何もしないわけではない:原子的ベクトルからは任意の名前が取り去られる.

ベクトルでない modeである "symbol" ("name"の同義語)と "pairlist"は受け入れられるが長い間文章化されていなかった:それらは as.nameと as.pairlistを実装するために使われ,これらの関数は好んで直接的に使われる.ここでの記述はどれもこれらのモードには適用されない:好みの形式に対するヘルプを見よ.

References

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

See Also

c, is.numeric, is.list,等.

Examples

df <- data.frame(x = 1:3, y = 5:7)## エラー:try(as.vector(data.frame(x = 1:3, y = 5:7), mode = "numeric"))

x <- c(a = 1, b = 2)is.vector(x)as.vector(x)all.equal(x, as.vector(x)) ## FALSE

###-- 次は全て TRUE:is.list(df)! is.vector(df)! is.vector(df, mode = "list")

Page 608: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

608 Vectorize

is.vector(list(), mode = "list")

Vectorize Vectorize a Scalar Function

Description

Vectorizeはその引数 FUNの動作をベクトル化する関数ラッパを作る.

Usage

Vectorize(FUN, vectorize.args = arg.names, SIMPLIFY = TRUE,USE.NAMES = TRUE)

Arguments

FUN 適用する関数で match.funで探される.

vectorize.args ベクトル化されるべき引数の文字列ベクトル.既定では FUNのすべての引数.

SIMPLIFY 論理値も悪しくは文字列;結果をベクトル,行列もしくはより次元の高い配列にまとめる; sapplyの simplify引数を見よ.

USE.NAMES 論理値;もし最初の . . .引数が名前を持てば名前を使う.もしくは文字列ベクトルならばそれを名前に使う.

Details

Vectorizeの vectorize.args引数中で名前がつけられる引数は mapplyへの ... リスト中に引き渡される引数である.実際に引き渡されるものだけがベクトル化される;既定の値はされない.例を見よ.

プリミティブな関数は形式的引数に値を持たないため Vectorizeを使えない.

Value

FUNと同じ引数を持つ関数で,mapplyへの呼び出しをラップする.

Examples

# rep はプリミティブなので rep.int を使うvrep <- Vectorize(rep.int)vrep(1:4, 4:1)vrep(times = 1:4, x = 4:1)

vrep <- Vectorize(rep.int, "times")vrep(times = 1:4, x = 42)

f <- function(x = 1:3, y) c(x, y)vf <- Vectorize(f, SIMPLIFY = FALSE)f(1:3, 1:3)vf(1:3, 1:3)vf(y = 1:3) # y だけをベクトル化,x はしない

# 非線形回帰の等高線プロット,nls() の例から

Page 609: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

warning 609

require(graphics)SS <- function(Vm, K, resp, conc) {

pred <- (Vm * conc)/(K + conc)sum((resp - pred)^2 / pred)

}vSS <- Vectorize(SS, c("Vm", "K"))Treated <- subset(Puromycin, state == "treated")

Vm <- seq(140, 310, length.out = 50)K <- seq(0, 0.15, length.out = 40)SSvals <- outer(Vm, K, vSS, Treated$rate, Treated$conc)contour(Vm, K, SSvals, levels = (1:10)^2, xlab = "Vm", ylab = "K")

warning Warning Messages

Description

その引数そして(オプションで)それが呼び出された表現式や関数に対応する警告メッセージを生成する.

Usage

warning(..., call. = TRUE, immediate. = FALSE, noBreaks. = FALSE,domain = NULL)

suppressWarnings(expr)

Arguments

... 文字列に強制変換出来るゼロかそれ以上のオブジェクト (そしてそれは分離記号無し連結される)又は単一の条件オブジェクト.

call. 論理値,呼び出しが警告メッセージの一部分になるべきかどうかを指示する.

immediate. 論理値,getOption("warn") <= 0であっても呼び出しは即座に出力されるべきかどうかを指示する.

noBreaks. 論理値,options(warn = 1)の時は可能な限りメッセージを一行として出力すべきかどうか指示する.

expr 評価される表現式.

domain gettextを見よ.もし NAなら,メッセージは翻訳されない.stop中の注意も見よ.

Details

結果は options("warn")の値と実行コード中で確立されたハンドラーに依存する.

もし条件オブジェクトが提供されるとそれは唯一の引数であるべきで,それ以上の引数は警告と共に無視される.

warningは警告条件シグナルを(実際上) signalConditionを呼び出すことで出す.もしハンドラーが無いか,全てのハンドラーが復帰すれば,warn = getOption("warn")の値が適当な行動を決定するために使われる.もし warnが負なら警告は無視される;もしそれがゼロならば,それらは蓄積されトップレベルが完了した後にプリントされる;もしそ

Page 610: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

610 warnings

れが 1ならばそれが発生した場所でプリントされ,もしそれが 2 (もしくはそれ以上)なら警告はエラーに変わる. warning(immediate. = TRUE)の呼び出しはこの呼び出しに限り warn <= 0を warn = 1に変える.

もし warnがゼロ(既定)ならば,読み取り専用の変数 last.warningが作りだされる.それは warningsへの呼び出しでプリント出来る警告を含む.

警告は getOption("warning.length")文字に切り詰められ [... truncated]で指示される.既定値は 1000文字.

警告が処理されている間に muffleWarningによる再開が利用できる.もし invokeRestartの起動で再開されると警告は即座に返される.

warningへの他のタイプの入力を文字列に変換することが試みられる.

suppressWarningsはその表現式を全ての警告無視した文脈中で評価する.

Value

不可視の文字列としての警告メッセージ.

References

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

See Also

致命的なエラーについては stop.診断メッセージについては message, warnings,そして引数 warn=を持つ options.

メッセージの自動翻訳の機構については gettext.

Examples

testit <- function() warning("testit")testit() ## 呼び出しを示すtestit <- function() warning("problem in testit", call. = FALSE)testit() ## 呼び出しなしsuppressWarnings(warning("testit"))

warnings Print Warning Messages

Description

warningsとその printメソッドは変数 last.warningを美しい形式でプリントする.

Usage

warnings(...)

Arguments

... catに渡される引数.

Page 611: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

weekdays 611

Details

last.warningオブジェクトが存在し warnings()が使われる状況については options("warn")の説明を見よ.本質的にはこれは options(warn = 0)で warningが少なくとも一回は呼び出されている場合である.

last.warning が最後の警告ではなく最後に記録された警告を参照することが可能である.例えば,options(warn)が変更されているか,又は破滅的なエラーが起きた時である.

Value

an object of S3 class "warnings", basically a named list.

警告

last.warningがどこに保管されるかとそれが可視かかは文章化されていない.これは変更されるかもしれない.

References

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

See Also

warning.

Examples

## 注意:この例は example() で実行するよりもペイストすることを意図しているow <- options("warn")for(w in -1:1) {

options(warn = w); cat("\n warn =", w, "\n")for(i in 1:3) { cat(i,"..\n"); m <- matrix(1:7, 3,4) }

}warnings()options(ow) # リセットtail(warnings(), 2) # 最後の二つの警告だけを見る('[' メソッドを使い)

weekdays Extract Parts of a POSIXt or Date Object

Description

曜日,月又は四半期,もしくはジュリアン時間(ある原点からの日数)を取り出す.これらは総称的関数である:ここでは内部的な暦日・時刻クラスに対するメソッドがドキュメント化されている.

Page 612: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

612 weekdays

Usage

weekdays(x, abbreviate)## S3 method for class 'POSIXt'weekdays(x, abbreviate = FALSE)## S3 method for class 'Date'weekdays(x, abbreviate = FALSE)

months(x, abbreviate)## S3 method for class 'POSIXt'months(x, abbreviate = FALSE)## S3 method for class 'Date'months(x, abbreviate = FALSE)

quarters(x, abbreviate)## S3 method for class 'POSIXt'quarters(x, ...)## S3 method for class 'Date'quarters(x, ...)

julian(x, ...)## S3 method for class 'POSIXt'julian(x, origin = as.POSIXct("1970-01-01", tz = "GMT"), ...)## S3 method for class 'Date'julian(x, origin = as.Date("1970-01-01"), ...)

Arguments

x クラス "POSIXt"又は "Date"を継承するオブジェクト.

abbreviate 論理値.名前を簡略化すべきか?

origin クラス "POSIXt"又は "Date"を継承する長さ 1のオブジェクト.

... 他のメソッドへの引数.

Value

weekdaysと monthsは使用中のロケールに於ける名前の文字列ベクトルを返す.

quartersは "Q1"から "Q4"までの文字列ベクトルを返す.

julianは原点からの日数(小数の可能性)を返す.原点は "origin"属性で表されている.Rに於ける全ての時間計算は閏秒を無視して行われる.

Note

月や一年の間の日数といった他の成分は非常に簡単に計算できる:単に as.POSIXltを使い,そして関連する成分を取り出せば良い.別法としては(特に成分を文字列として欲しい時) strftimeを使う.

See Also

DateTimeClasses, Date

Page 613: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

which 613

Examples

weekdays(.leap.seconds)months(.leap.seconds)quarters(.leap.seconds)

## ジュリアン日数(JDN, https://en.wikipedia.org/wiki/Julian_day)## は予測的ユリウス暦による 4317 BC の最初の日の UTC での正午以来の日数である.## より最近では UTC と数秒異なる '地球時' による,## https://en.wikipedia.org/wiki/Terrestrial_Time を見よ.julian(Sys.Date(), -2440588) # 日付からfloor(as.numeric(julian(Sys.time())) + 2440587.5) # 暦日・時刻から

which Which indices are TRUE?

Description

論理値オブジェクトの TRUEの添字を与える.配列添字を許す.

Usage

which(x, arr.ind = FALSE, useNames = TRUE)arrayInd(ind, .dim, .dimnames = NULL, useNames = FALSE)

Arguments

x 論理値ベクトル又は配列.NAが許され取り除かれる(あたかも FALSE)であるかのように扱われる.

arr.ind 論理値;xが配列ならば配列添字を返すべきか?

ind which(x)が返すような整数値の添字ベクトル.

.dim dim(.) 整数ベクトル.

.dimnames オプションの文字列 dimnames(.) のリスト.もし useNames が真ならarrayInd()に対する次元名を構成するのに使われる (従ってwhich(*, arr.ind=TRUE)).もし names(.dimnames)が空でなければ,これらは列名として使われる..dimnames[[1]]は行名として使われる.

useNames arrayInd()の値が(nullでない)次元名をともかくも持つべきかを指示する論理値.

Value

もし arr.ind == FALSE (既定)ならば,長さが sum(x)に等しい整数ベクトル,つまり x中の TRUEの数:基本的に結果は (1:length(x))[x]である.

もし arr.ind == TRUEで xが配列ならば (次元属性を持つ)結果は行の各々が x中の一つの要素の添字である行列 arrayInd(which(x), dim(x), dimnames(x));下の例を見よ.

Note

殆どの他の基本 R関数と異なりこれは xを論理値に強制変換しない:論理値型の引数だけが許され他はエラーになる.

Page 614: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

614 which.min

Author(s)

Werner Stahelと Peter Holzer (ETH Zurich)が arr.indオプションを提案した.

See Also

Logic,最大値又は最小値の添字に対しては which.min,そしてベクトル中の最初の添字は match,つまりスカラーの aに対しては match(a, x)は min(which(x == a))に等しいがより効率的.

Examples

which(LETTERS == "R")which(ll <- c(TRUE, FALSE, TRUE, NA, FALSE, FALSE, TRUE)) #> 1 3 7names(ll) <- letters[seq(ll)]which(ll)which((1:12)%%2 == 0) # どれが偶数?which(1:10 > 3, arr.ind = TRUE)

( m <- matrix(1:12, 3, 4) )div.3 <- m %% 3 == 0which(div.3)which(div.3, arr.ind = TRUE)rownames(m) <- paste("Case", 1:3, sep = "_")which(m %% 5 == 0, arr.ind = TRUE)

dim(m) <- c(2, 2, 3); mwhich(div.3, arr.ind = FALSE)which(div.3, arr.ind = TRUE)

vm <- c(m)dim(vm) <- length(vm) #-- length(dim(...)) == 1 でおかしなことがwhich(div.3, arr.ind = TRUE)

which.min Where is the Min() or Max() or first TRUE or FALSE ?

Description

数値(又は論理値)ベクトルの(最初の)最小値と最大値の位置,つまり添字を決定する.

Usage

which.min(x)which.max(x)

Arguments

x 数値(論理値,整数又は倍精度実数)ベクトル,又は doubleへの内部的強制変換が動作する Rオブジェクトで,その minや maxが探される.

Page 615: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

which.min 615

Value

欠損値と NaN値は捨て去られる.

整数.64ビットプラットフォームでもし length(x) =: n≥ 231 ならば長さ 1か 0の整数である倍精度値(xが NAでない値を持てば)で,それぞれ xの最初の最小値か最大値を与える.

もし極値がユニーク(又は空)なら,結果はそれぞれ which(x == min(x, na.rm = TRUE))か which(x == max(x, na.rm = TRUE))である (しかしより効率的).

Note

FALSEと TRUE値を持つ論理値ベクトル xに対しては FALSE < TRUEであるため which.min(x)と which.max(x)はそれぞれ最初の FALSE又は TRUEの添字を返す.

Author(s)

Martin Maechler

See Also

which, max.col, max,等.

もし1次元ベクトルの代わりに配列/行列が必要なら arrayInd()を使う.

nnetパッケージ中の which.is.maxはタイを無作為に解消する点で異なる(そしてタイの定義に‘曖昧さ’を許す).

Examples

x <- c(1:4, 0:5, 11)which.min(x)which.max(x)

## NA があると動作しない,それらを捨て去る:presidents[1:30]range(presidents, na.rm = TRUE)which.min(presidents) # 28which.max(presidents) # 2

## 最初に起きたものを見つける,つまりもし少なくとも一つあれば最初の TRUE:x <- rpois(10000, lambda = 10); x[sample.int(50, 20)] <- NA## where is the first value >= 20 ?which.max(x >= 20)

## リストにも使える(数値ベクトルに強制変換される):which.min(list(A = 7, pi = pi)) ## -> c(pi = 2L)

Page 616: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

616 with

with Evaluate an Expression in a Data Environment

Description

データから作られた環境中で R 表現式を評価する.可能性として元のデータ(のコピー)を修正する.

Usage

with(data, expr, ...)within(data, expr, ...)

Arguments

data 環境を構成するために使われるデータ.既定の withメソッドは環境,リスト,データフレーム,又は sys.callに於けるような整数.withinに対してはこれはリストやデータフレームで良い.

expr 評価される表現式.

... 将来のメソッドに渡される引数.

Details

withは dataから構成された局所的な環境中で exprを評価する総称的関数である.環境は呼び出し環境を親として持つ.これはモデル化関数への呼び出しを簡略化するのに役に立つ. (注意:もし dataが環境ならこれがその既存の親と共に使われる.)

expr中の付値は構成された環境中で行われ,ユーザの作業空間中ではない.

within は類似しているが,それが expr の評価の後に環境を吟味し,対応する修正をdata のコピーに施し (これはもしデータフレームに保存できないオブジェクトが作られるデータフレームの場合には失敗するかもしれない)そしてそれを返す点で異なる.withinは transformの代わりに使うことができる.

Value

withに対しては評価された exprの値. withinに対しては修正されたオブジェクト.

See Also

evalq, attach, assign, transform.

Examples

require(stats); require(graphics)# glm からの例:

library(MASS)with(anorexia, {

anorex.1 <- glm(Postwt ~ Prewt + Treat + offset(Prewt),family = gaussian)

summary(anorex.1)})

Page 617: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

withVisible 617

aq <- within(airquality, { # 複数の変数が変更出来ることを注意するlOzone <- log(Ozone)Month <- factor(month.abb[Month])cTemp <- round((Temp - 32) * 5/9, 1) # 華氏から摂氏にS.cT <- Solar.R / cTemp # 新規に変数を使うrm(Day, Temp)

})head(aq)

with(data.frame(u = c(5,10,15,20,30,40,60,80,100),lot1 = c(118,58,42,35,27,25,21,19,18),lot2 = c(69,35,26,21,18,16,13,12,12)),

list(summary(glm(lot1 ~ log(u), family = Gamma)),summary(glm(lot2 ~ log(u), family = Gamma))))

# boxplot からの例:with(ToothGrowth, {

boxplot(len ~ dose, boxwex = 0.25, at = 1:3 - 0.2,subset = (supp == "VC"), col = "yellow",main = "Guinea Pigs' Tooth Growth",xlab = "Vitamin C dose mg",ylab = "tooth length", ylim = c(0, 35))

boxplot(len ~ dose, add = TRUE, boxwex = 0.25, at = 1:3 + 0.2,subset = supp == "OJ", col = "orange")

legend(2, 9, c("Ascorbic acid", "Orange juice"),fill = c("yellow", "orange"))

})

# subset 引数を避ける別法:with(subset(ToothGrowth, supp == "VC"),

boxplot(len ~ dose, boxwex = 0.25, at = 1:3 - 0.2,col = "yellow", main = "Guinea Pigs' Tooth Growth",xlab = "Vitamin C dose mg",ylab = "tooth length", ylim = c(0, 35)))

with(subset(ToothGrowth, supp == "OJ"),boxplot(len ~ dose, add = TRUE, boxwex = 0.25, at = 1:3 + 0.2,

col = "orange"))legend(2, 9, c("Ascorbic acid", "Orange juice"),

fill = c("yellow", "orange"))

withVisible Return both a value and its visibility

Description

この関数は表現式を評価し,それを二つの要素,その値とそれを自動的にプリントするかどうかを指示するフラグ,を持つリストとして返す.

Usage

withVisible(x)

Page 618: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

618 write

Arguments

x 評価されるべき表現式.

Details

引数は呼び出し側の文脈で評価される.

これはプリミティブな関数である.

Value

value 評価後の xの値.

visible 論理値;値を自動プリントするかどうか.

See Also

invisible, eval

Examples

x <- 1withVisible(x <- 1)xwithVisible(x)

# 特別な処理のために呼び出しを evalq() 中にラップする

df <- data.frame(a = 1:5, b = 1:5)evalq(withVisible(a + b), envir = df)

write Write Data to a File

Description

データ(普通行列) xはファイル fileに書き込まれる.もし xが二次元行列ならば file中の列と内部表現のそれらを同じにするためには行列を転置する必要がある.

Usage

write(x, file = "data",ncolumns = if(is.character(x)) 1 else 5,append = FALSE, sep = " ")

Arguments

x 書き込まれるデータ,普通原子的ベクトル.

file コネクション,又は書き込まれるファイルの名前である文字列.もし""なら標準出力コネクションにプリントされる.もしこれが "|cmd"なら,出力は ‘cmd’で与えられる命令にパイプされる.

ncolumns データを書き込む列数.

append もし TRUEならデータ xはコネクションに追加される.

sep 列を分離するために使われる文字列.sep = "\t"を使うとタブで区切られる;既定は " ".

Page 619: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

writeLines 619

References

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

See Also

writeは catに対するラッパで,これは使用される書式に関するより詳細を与える.

任意の Rオブジェクトの書き込みには save,データフレームについては write.table,そしてデータの読み込みには scan.

Examples

# 2 x 5 行列を作るx <- matrix(1:10, ncol = 5)

# ファイルデータは x を含む,行数 2,列数 5# 1 3 5 7 9 が最初の行write(t(x))

# "console" に書き出す,タブで区切られている# 行数 2,列数 5 だが最初の行は 1 2 3 4 5write(x, "", sep = "\t")unlink("data") # 後片付け

writeLines Write Lines to a Connection

Description

テキスト行をコネクションに書き込む.

Usage

writeLines(text, con = stdout(), sep = "\n", useBytes = FALSE)

Arguments

text 文字列.

con コネクションオブジェクト又は文字列.

sep 文字列.テキストの各行の後にコネクションに書き込まれる文字列.

useBytes 論理値.‘詳細’を見よ.

Details

もし conが文字列ならば,関数は関数呼び出しの間中開かれているファイルコネクションを得るために fileを呼び出す.

もしコネクションが開かれているとそれはその現在の位置から書き込まれる.もし開かれていなければ,それは呼び出しの間中モード "wt"で開かれそれから閉じられる.

普通 writeLinesはテキストモードコネクションと共に使われ,そして既定の分離記号はそのプラットフォームに対する通常の分離記号 (Unix/Linux では LF,Windows では

Page 620: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

620 xtfrm

CRLF)に変換される.より多くの制御には,バイナリコネクションを開きファイルに書き込みたい正確な値を sepに指定する.更なる制御にはバイナリコネクションに対してwriteCharを使う.

useBytesはエキスパート用である.普通(偽の時)マーク付きエンコーディングを持つ文字列はコネクションに渡される前に現在のエンコーディングに変換される(更に再エンコーディングがされるかもしれない). useBytes = TRUEはマーク付き文字列の再エンコーディングを抑制するので,それらはバイト毎にコネクションに渡される:これは文字列が既に iconv等で再エンコーディングされているときは役に立つかもしれない.(これは文字列が "bytes"でエンコーディングされているときは自動的に起動される.)

See Also

connections, writeChar, writeBin, readLines, cat

xtfrm Auxiliary Function for Sorting and Ranking

Description

総称的な補助関数で xと同じ順序でソートする数値ベクトルを生成する.

Usage

xtfrm(x)

Arguments

x Rオブジェクト.

Details

これはランク付けの特殊なケースであるが,rankよりもより一般性が低い分総称的とされるのに適している.既定のメソッドは rank(x, ties.method = "min", na.last = "keep")に類似しているので,NA値はランク NAを与えられ,全てのタイ値は同じ整数値ランクを与えられる.

因子メソッドはコードを取り出す. Survメソッドは最初時間についてソートし,それから状態コードについて,最後にもし存在すれば timme2についてソートする.規約からこれが個別にソートする状態は死亡の前に依然生存している.

既定メソッドはもし is.numeric(x)が真ならばオブジェクトのクラスを取り除き,さもなければ x[i] (整数に対しては i)のクラスに対して == and >メソッドを使う.そして xのクラスに対しては is.naメソッドを使うが,そうするとかなり遅い可能性がある,

これは内部総称的なプリミティブ関数であり,S3又は S4メソッドをそれに対して書くことが出来る.

Value

xと同じ長さの数値(普通整数)ベクトル.

See Also

rank, sort, order.

Page 621: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

zapsmall 621

zapsmall Rounding of Numbers

Description

zapsmall round(x, digits = dr)を呼び出すための digits引数 drを決定するが,ゼロに近い(最大絶対値で比較する)値は‘殺す’,つまり, 0として扱う.

Usage

zapsmall(x, digits = getOption("digits"))

Arguments

x 数値もしくは複素数値ベクトル.

digits 使用される精度を指示する整数.

References

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.

Examples

x2 <- pi * 100^(-1:3)print(x2 / 1000, digits = 4)zapsmall(x2 / 1000, digits = 4)

zapsmall(exp(1i*0:4*pi/2))

zpackages Listing of Packages

Description

.packagesはパッケージの利用可能性の情報を返す.

Usage

.packages(all.available = FALSE, lib.loc = NULL)

Arguments

all.available 論理値;もし TRUEなら lib.loc中の全ての利用可能なパッケージの文字列ベクトルを返す.

lib.loc 探査がなされる Rのライブラリツリーの位置を記述する文字列ベクトル,又は NULL.既定値の NULLは .libPaths()に対応する.

Page 622: Package ‘base’nakama/Rjp/base-manual.pdf.Devices は長さ1の文字列ベクトルの対リスト.最初の事項は常に"null device" で,同時にアクティブになっているグラフィックスデバイスの最大個数と同じだけの事項が

622 zutils

Details

.packages()は現在付加されているパッケージの名前を不可視で返す一方,

.packages(all.available = TRUE)はライブラリ位置のパス lib.loc中で利用可能な全てのパッケージを(可視で)返す.

‘利用可能’と見做されるパッケージは適正なメタデータ (従ってインストール済みパッケージ)を持たなければならない.しかしながらこれはもしネタデータがディレクトリ名に一致しないとパッケージが利用可能と報告する:メタデータがマッチするかどうかを確認するには find.packageを使うか,より遅いがより徹底的な‘利用可能’なパッケージのチェックには installed.packagesを使う.

Value

パッケージの基本名の文字列ベクトルで, all.available = TRUEで無い限り不可視.

Note

.packages(all.available = TRUE)は少数のパッケージが利用可能かどうかを見つける方法ではない:数千のパッケージがインストールされていれば手間がかかるだけではなく,不完全なテストでもある.なぜ requireを使うべきかについては find.packageに対するヘルプを見よ.

Author(s)

R core; .packagesの all.available = TRUE部分は Guido Masarotto.

See Also

library, .libPaths, installed.packages.

Examples

(.packages()) # "base" だけかもしれない.packages(all.available = TRUE) # 利用可能なもの全てを文字列で返すrequire(splines)(.packages()) # "splines" もdetach("package:splines")

zutils Miscellaneous Internal/Programming Utilities

Description

雑多な内部/プログラミング用のユーティリティ.

Usage

.standard_regexps()

Details

.standard_regexps は明白な名前を持つ valid_package_name と valid_package_versionを含む‘標準’の正規表現のリストを返す.正規表現はアンカーを持たない.