The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
stringmagic
is now fully compatible with R v3.5.0 (at
least)fix major bug in the if-else operator (&
)
leading to opposite operations
in string_vec
, fix bug leading to the removal of
empty strings
in string_vec
, fix bugs with the arguments
.sep
and .collapse
in C code: use STRING_PTR_RO
instead of
STRING_PTR
to comply with new CRAN policy
string_magic
: new operator table
to
flexibly attach elements with their frequencies:= string_split("atagggagctacctgcgcgtcgcccaaaagcaggg", "")
dna cat_magic("Letters in the DNA seq. {''c, Q ? dna}: ",
# by default: inverse frequency sorting
" - default: {table, enum ? dna}",
" - value sorted: {table.sort, enum ? dna}",
# argument in single quotes to customize the display, it's a
# `string_magic` interpolation
" - shares: {'{x} [{round(s * 100)}%]' table, enum ? dna}",
# `fsort` sorts by **increasing** frequency
" - freq. sorted: {'{q ? x}' table.fsort, enum ? dna}",
.sep = "\n")
#> Letters in the DNA seq. "atagggagctacctgcgcgtcgcccaaaagcaggg":
#> - default: g (12), c (10), a (9) and t (4)
#> - value sorted: a (9), c (10), g (12) and t (4)
#> - shares: g [34%], c [29%], a [26%] and t [11%]
#> - freq. sorted: 't', 'a', 'c' and 'g'
string_magic
: new operators round
and
signif
(wtih shorthands r0
to r6
and s0
to s6
) to flexibly format numbers:= c(153, 207.256, 0.00254, 15231312.2)
x # keeping one significant digit
cat_magic("v1: {s1, align ? x} ",
# removing the comma for large numbers and preserving ints
"v2: {s1.int.nocomma ? x}", .collapse = "\n")
#> v1: 153.0 v2: 153
#> v1: 207.2 v2: 207.2
#> v1: 0.002 v2: 0.002
#> v1: 15,231,312.2 v2: 15231312.2
string_magic("pi = {r3 ? pi}")
#> [1] "pi = 3.142"
add the argument .data
to
string_magic()
, used to evaluate variables in the
interpolations
new functions get_interpolated_expr()
and
get_interpolated_vars()
. This function recovers all the
expressions to be interpolated in a call to string_magic()
(oriented for developers).
new argument center.right
in the function
string_fill
to resolve situations in which the characters
are not perfectly centered
make cat_magic
and message_magic
more
in line with their base R counterparts (they work properly with vectors
now)
st_ops
, st_is
,
st_any
, st_all
have been renamed into
stops
, stis
, stany
,
stall
to align with the convention of all other aliases.
Although the names aren’t great, at least they are consistent.the new operator swidth
(screen width) replaces the
operator width
. The operator width becomes an alias for
fill
.
the default screen width for message_magic
becomes
the minimum between 100 characters and 90% of the current screen size
(actually the console size).
rework the argument .width
in
message_magic
and cat_magic
: now the special
variable .sw
can only be used in a one-sided formula
(non-standard evaluation is still supported for
retro-compatibility)
improve error handling
add left
option to operators when relevant. Thanks
to @kylebutts,
#3
in string_vec
, change the default of argument
.protect.vars
to FALSE
, which is much more
aligned to common sense
in string_magic
’s argument .post
:
removal of argument catching, which could lead, occasionnally, to bugs
very hard to understand
in string_vec
: add the arguments .check
and .help
.
stringmagic
compatible with R
in
[4.1.0; 4.1.2]..trigger
to
cat/message_magic_alias
stringmagic
compatible with R
<
4.1.0 by removing calls to ...names()
.add string_extract
to extract patterns
add string_split
to split character strings
string_ops
now uses ...
to pass
operations. This is backward compatible.
string_clean
: now the magic flag also expands the
replacements:
= "Hi Mary, how's John doing?"
x = "John"
from = "Kate"
to string_clean(x, "m/{from} => {to}")
#> [1] "Hi Mary, how's Kate doing?"
string_magic
: add the comma
flag to the
enum
operation. In that case, the enumeration ends with “,”
instead of “, and”.
string_magic
: the if-else operation
&
now keeps memory of variables accessed within data
sets:
= list(x = c(15, 25, 550), y = rnorm(1000))
data string_magic("The values are{& length(data$x) < 5 ; : {enum ? .} ; too many}.")
# [1] "The values are: 15, 25 and 550."
string_magic("The values are{& length(data$y) < 5 ; : {enum ? .} ; too many}.")
# [1] "The values are too many."
string_magic
: new operation deparse
(alias: dp
) to deparse an object and keep only the first
characters of the deparsed string.
improve error messages.
sma
for
string_magic
, catma
for catmagic,
mema
for message_magic
, etc..
(st_ops
, st_is
, st_any
,
st_all
, stextract
, stwhich
,
stget
, stclean
, stvec
,
streplace
, stsplit
– short names with vowels
after st
have an underscore.)First public release. The syntax should be stable.
This package is a spinoff from fixest’s formula syntax interpolation.
Many thanks to Achim Zeileis, Vincent Arel-Bundock and Kyle Butts who provided insightful comments during the development.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.