Integer Numbers Displayed in Octal (original) (raw)
octmode {base} | R Documentation |
---|
Description
Integers which are displayed in octal (base-8 number system) format, with as many digits as are needed to display the largest, using leading zeroes as necessary.
Arithmetic works as for integers, and non-integer valued mathematical functions typically work by truncating the result to integer.
Usage
as.octmode(x)
## S3 method for class 'octmode'
as.character(x, keepStr = FALSE, ...)
## S3 method for class 'octmode'
format(x, width = NULL, ...)
## S3 method for class 'octmode'
print(x, ...)
Arguments
x | an object, for the methods inheriting from class "octmode". |
---|---|
keepStr | a logical indicating that names and dimensions should be kept; set TRUE for back compatibility, if needed. |
width | NULL or a positive integer specifying the minimum field width to be used, with padding by leading zeroes. |
... | further arguments passed to or from other methods. |
Details
"octmode"
objects are integer vectors with that class attribute, used primarily to ensure that they are printed in octal notation, specifically for Unix-like file permissions such as755
. Subsetting ([[](../../base/help/+5B.html)
) works too, as do arithmetic or other mathematical operations, albeit truncated to integer.
as.character(x)
drops all [attributes](../../base/help/attributes.html)
(unless whenkeepStr=TRUE
where it keeps, dim
, dimnames
andnames
for back compatibility) and converts each entry individually, hence with no leading zeroes, whereas in format()
, when width = NULL
(the default), the output is padded with leading zeroes to the smallest width needed for all the non-missing elements.
as.octmode
can convert integers (of type "integer"
or"double"
) and character vectors whose elements contain only digits 0-7
(or are NA
) to class "octmode"
.
There is a [!](../../base/help/+21.html)
method and methods for [|](../../base/help/+7C.html)
and[&](../../base/help/+26.html)
: these recycle their arguments to the length of the longer and then apply the operators bitwise to each element.
See Also
These are auxiliary functions for [file.info](../../base/help/file.info.html)
.
[hexmode](../../base/help/hexmode.html)
, [sprintf](../../base/help/sprintf.html)
for other options in converting integers to octal, [strtoi](../../base/help/strtoi.html)
to convert octal strings to integers.
Examples
(on <- as.octmode(c(16, 32, 127:129))) # "020" "040" "177" "200" "201"
unclass(on[3:4]) # subsetting
## manipulate file modes
fmode <- as.octmode("170")
(fmode | "644") & "755"
(umask <- Sys.umask()) # depends on platform
c(fmode, "666", "755") & !umask
om <- as.octmode(1:12)
om # print()s via format()
stopifnot(nchar(format(om)) == 2)
om[1:7] # *no* leading zeroes!
stopifnot(format(om[1:7]) == as.character(1:7))
om2 <- as.octmode(c(1:10, 60:70))
om2 # prints via format() -> with 3 octals
stopifnot(nchar(format(om2)) == 3)
as.character(om2) # strings of length 1, 2, 3
## Integer arithmetic (remaining "octmode"):
om^2
om * 64
-om
(fac <- factorial(om)) # !1, !2, !3, !4 .. in hexadecimals
as.integer(fac) # indeed the same as factorial(1:12)
[Package _base_ version 4.6.0 Index]