The freegroup
package provides functionality for working with the free
group in R. A detailed vignette is provided in the package. Informally,
the free group is the set
of words that are
objects like
,
with a group operation of string juxtaposition. Usually one works only
with words that are in ``reduced form’’, which has successive powers
of the same symbol combined, so
would be equal to
;
see how appears to the
third power and the
term in the middle has vanished.
The group operation of juxtaposition is formally indicated by , but this is often omitted in algebraic notation; thus, for example .
You can install the released version of freegroup from CRAN with:
# install.packages("freegroup") # uncomment this to install the package
library("freegroup")
freegroup
package in useFunction rfree()
generates a vector of random free group elements,
giving quick “get you going” examples:
a <- rfree(10,5)
a
#> [1] a.d^5.a^-4.b^5.e^-3 a.e^2.b^2 a^3.e^-7.b^-3
#> [4] b^7.d^4 a^2.b^-4.c^-4 a^-5.d^3.c^3
#> [7] d^-5.e^-1.d^-5.e^3 c.b^-7.c^4.b^-5 c^6.e^2
#> [10] e^-3.d^5.a^-5
b <- as.free('x')
Then we can perform various operations on these vectors:
a+b
#> [1] a.d^5.a^-4.b^5.e^-3.x a.e^2.b^2.x a^3.e^-7.b^-3.x
#> [4] b^7.d^4.x a^2.b^-4.c^-4.x a^-5.d^3.c^3.x
#> [7] d^-5.e^-1.d^-5.e^3.x c.b^-7.c^4.b^-5.x c^6.e^2.x
#> [10] e^-3.d^5.a^-5.x
a-b
#> [1] a.d^5.a^-4.b^5.e^-3.x^-1 a.e^2.b^2.x^-1 a^3.e^-7.b^-3.x^-1
#> [4] b^7.d^4.x^-1 a^2.b^-4.c^-4.x^-1 a^-5.d^3.c^3.x^-1
#> [7] d^-5.e^-1.d^-5.e^3.x^-1 c.b^-7.c^4.b^-5.x^-1 c^6.e^2.x^-1
#> [10] e^-3.d^5.a^-5.x^-1
a^b
#> [1] x^-1.a.d^5.a^-4.b^5.e^-3.x x^-1.a.e^2.b^2.x
#> [3] x^-1.a^3.e^-7.b^-3.x x^-1.b^7.d^4.x
#> [5] x^-1.a^2.b^-4.c^-4.x x^-1.a^-5.d^3.c^3.x
#> [7] x^-1.d^-5.e^-1.d^-5.e^3.x x^-1.c.b^-7.c^4.b^-5.x
#> [9] x^-1.c^6.e^2.x x^-1.e^-3.d^5.a^-5.x
There are a number of package functions that work in a vectorized way:
sum(a)
#> [1] a.d^5.a^-4.b^5.e^-3.a.e^2.b^2.a^3.e^-7.b^4.d^4.a^2.b^-4.c^-4.a^-5.d^3.c^3.d^-5.e^-1.d^-5.e^3.c.b^-7.c^4.b^-5.c^6.e^-1.d^5.a^-5
The package also supports extraction and replacement:
a[3:9] <- as.free('xy')
a
#> [1] a.d^5.a^-4.b^5.e^-3 a.e^2.b^2 x.y
#> [4] x.y x.y x.y
#> [7] x.y x.y x.y
#> [10] e^-3.d^5.a^-5
Various simple elements can be created:
alpha(1:10)
#> [1] a b c d e f g h i j
abc(1:5)
#> [1] a a.b a.b.c a.b.c.d a.b.c.d.e
For more detail, see the package vignette
vignette("freegroup")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.