mteb/BrightProStackoverflowRetrieval huggingface dataset:
[ RDocumentation ](/)

Moon  [ ](https://github.com/datacamp/rdocumentation-2.0) [ Learn R
](https://www.datacamp.com/learn/r)

Search all packages and functions

[ base  (version  3.6.2  ) ](/packages/base/versions/3.6.2)

#  Sys.setenv: Set or Unset Environment Variables

##  Description

` Sys.setenv ` sets environment variables (for other processes called from
within  R  or future calls to ` [ Sys.getenv
](/link/Sys.getenv?package=base&version=3.6.2) ` from this  R  process).

` Sys.unsetenv ` removes environment variables.

##  Usage

    
    
    Sys.setenv(…)
    
    Sys.unsetenv(x)

##  Arguments

…

named arguments with values coercible to a character string.

x

a character vector, or an object coercible to character.

##  Value

A logical vector, with elements being true if (un)setting the corresponding
variable succeeded. (For ` Sys.unsetenv ` this includes attempting to remove a
non-existent variable.)

##  Details

Non-standard  R  names must be quoted in ` Sys.setenv ` : see the examples.
Most platforms (and POSIX) do not allow names containing ` "=" ` . Windows
does, but the facilities provided by  R  may not handle these correctly so
they should be avoided. Most platforms allow setting an environment variable
to ` "" ` , but Windows does not, and there ` Sys.setenv(FOO = "") ` unsets `
FOO ` .

There may be system-specific limits on the maximum length of the values of
individual environment variables or of all environment variables. Windows has
a limit of 32,767 characters on the environment block, and ` cmd.exe ` has a
limit of 2047 (Windows 2000) or 8192 characters (XP and later) for each value.

##  See Also

` [ Sys.getenv ](/link/Sys.getenv?package=base&version=3.6.2) ` , [ Startup
](/link/Startup?package=base&version=3.6.2) for ways to set environment
variables for the  R  session.

` [ setwd ](/link/setwd?package=base&version=3.6.2) ` for the working
directory.

The help for ‘ [ environment variables
](/link/environment%20variables?package=base&version=3.6.2) ’ lists many of
the environment variables used by  R  .

##  Examples

[ Run this code
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2FSys.setenv&utm_source=r-docs&utm_medium=docs&utm_term=Sys.setenv&utm_content=run_example_in_workspace)

    
    
    # NOT RUN {
    print(Sys.setenv(R_TEST = "testit", "A+C" = 123))  # `A+C` could also be used
    Sys.getenv("R_TEST")
    Sys.unsetenv("R_TEST")
    Sys.unsetenv("R_TEST")  # may warn and not succeed
    Sys.getenv("R_TEST", unset = NA)
    # }
    

Run the code above in your browser using  [ DataCamp Workspace
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2FSys.setenv&utm_source=r-docs&utm_medium=docs&utm_term=Sys.setenv&utm_content=run_example_in_workspace)

Powered by  [ DataCamp ](https://www.datacamp.com/)
n the user's workspace: see the
examples.) For this reason ` attach ` can lead to confusion.

One useful ‘trick’ is to use ` what = NULL ` (or equivalently a length-zero
list) to create a new environment on the search path into which objects can be
assigned by ` [ assign ](/link/assign?package=base&version=3.6.2) ` or ` [
load ](/link/load?package=base&version=3.6.2) ` or ` [ sys.source
](/link/sys.source?package=base&version=3.6.2) ` .

Names starting ` "package:" ` are reserved for ` [ library
](/link/library?package=base&version=3.6.2) ` and should not be used by end
users. Attached files are by default given the name ` file:  what  ` . The `
name ` argument given for the attached environment will be used by ` [ search
](/link/search?package=base&version=3.6.2) ` and can be used as the argument
to ` [ as.environment ](/link/as.environment?package=base&version=3.6.2) ` .

There are hooks to attach user-defined table objects of class `
"UserDefinedDatabase" ` , supported by the Omegahat package  RObjectTables  .
See [ http://www.omegahat.net/RObjectTables/
](http://www.omegahat.net/RObjectTables/) .

##  References

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

##  See Also

` [ library ](/link/library?package=base&version=3.6.2) ` , ` [ detach
](/link/detach?package=base&version=3.6.2) ` , ` [ search
](/link/search?package=base&version=3.6.2) ` , ` [ objects
](/link/objects?package=base&version=3.6.2) ` , ` [ environment
](/link/environment?package=base&version=3.6.2) ` , ` [ with
](/link/with?package=base&version=3.6.2) ` .

##  Examples

[ Run this code
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2Fattach&utm_source=r-docs&utm_medium=docs&utm_term=attach&utm_content=run_example_in_workspace)

    
    
    # NOT RUN {
    require(utils)
    
    summary(women$height)   # refers to variable 'height' in the data frame
    attach(women)
    summary(height)         # The same variable now available by name
    height <- height*2.54   # Don't do this. It creates a new variable
                            # in the user's workspace
    find("height")
    summary(height)         # The new variable in the workspace
    rm(height)
    summary(height)         # The original variable.
    height <<- height*25.4  # Change the copy in the attached environment
    find("height")
    summary(height)         # The changed copy
    detach("women")
    summary(women$height)   # unchanged
    
    # }
    # NOT RUN {
    ## create an environment on the search path and populate it
    sys.source("myfuns.R", envir = attach(NULL, name = "myfuns"))
    # }
    

Run the code above in your browser using  [ DataCamp Workspace
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2Fattach&utm_source=r-docs&utm_medium=docs&utm_term=attach&utm_content=run_example_in_workspace)

Powered by  [ DataCamp ](https://www.datacamp.com/)
[ RDocumentation ](/)

Moon  [ ](https://github.com/datacamp/rdocumentation-2.0) [ Learn R
](https://www.datacamp.com/learn/r)

Search all packages and functions

[ base  (version  3.6.2  ) ](/packages/base/versions/3.6.2)

#  ns-topenv: Top Level Environment

##  Description

Finding the top level ` [ environment
](/link/environment?package=base&version=3.6.2) ` from an environment ` envir
` and its enclosing environments.

##  Usage

    
    
    topenv(envir = parent.frame(),
           matchThisEnv = getOption("topLevelEnvironment"))

##  Arguments

envir

environment.

matchThisEnv

return this environment, if it matches before any other criterion is
satisfied. The default, the option  topLevelEnvironment  , is set by ` [
sys.source ](/link/sys.source?package=base&version=3.6.2) ` , which treats a
specific environment as the top level environment. Supplying the argument as `
NULL ` means it will never match.

##  Details

` topenv ` returns the first top level ` [ environment
](/link/environment?package=base&version=3.6.2) ` found when searching ` envir
` and its enclosing environments. An environment is considered top level if it
is the internal environment of a namespace, a package environment in the ` [
search ](/link/search?package=base&version=3.6.2) ` path, or ` [ .GlobalEnv
](/link/.GlobalEnv?package=base&version=3.6.2) ` .

##  See Also

` [ environment ](/link/environment?package=base&version=3.6.2) ` , notably `
parent.env() ` on “enclosing environments”; ` [ loadNamespace
](/link/loadNamespace?package=base&version=3.6.2) ` for more on namespaces.

##  Examples

[ Run this code
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2Fns-
topenv&utm_source=r-docs&utm_medium=docs&utm_term=ns-
topenv&utm_content=run_example_in_workspace)

    
    
    # NOT RUN {
    topenv(.GlobalEnv)
    topenv(new.env()) # also global env
    topenv(environment(ls))# namespace:base
    topenv(environment(lm))# namespace:stats
    # }
    

Run the code above in your browser using  [ DataCamp Workspace
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2Fns-
topenv&utm_source=r-docs&utm_medium=docs&utm_term=ns-
topenv&utm_content=run_example_in_workspace)

Powered by  [ DataCamp ](https://www.datacamp.com/)
[ RDocumentation ](/)

Moon  [ ](https://github.com/datacamp/rdocumentation-2.0) [ Learn R
](https://www.datacamp.com/learn/r)

Search all packages and functions

[ base  (version  3.6.2  ) ](/packages/base/versions/3.6.2)

#  isS4: Test for an S4 object

##  Description

Tests whether the object is an instance of an S4 class.

##  Usage

    
    
    isS4(object)
    
    asS4(object, flag = TRUE, complete = TRUE)
    asS3(object, flag = TRUE, complete = TRUE)

##  Arguments

object

Any R object.

flag

Optional, logical: indicate direction of conversion.

complete

Optional, logical: whether conversion to S3 is completed. Not usually needed,
but see the details section.

##  Value

` isS4 ` always returns ` TRUE ` or ` FALSE ` according to whether the
internal flag marking an S4 object has been turned on for this object.

` asS4 ` and ` asS3 ` will turn this flag on or off, and ` asS3 ` will set the
class from the objects ` .S3Class ` slot if one exists. Note that ` asS3 `
will _not_ turn the object into an S3 object unless there is a valid
conversion; that is, an object of type other than ` "S4" ` for which the S4
object is an extension, unless argument ` complete ` is ` FALSE ` .

##  Details

Note that ` isS4 ` does not rely on the  methods  package, so in particular it
can be used to detect the need to ` [ require
](/link/require?package=base&version=3.6.2) ` that package.

` asS3 ` uses the value of ` complete ` to control whether an attempt is made
to transform ` object ` into a valid object of the implied S3 class. If `
complete ` is ` TRUE ` , then an object from an S4 class extending an S3 class
will be transformed into an S3 object with the corresponding S3 class (see ` [
S3Part ](/link/S3Part?package=base&version=3.6.2) ` ). This includes classes
extending the pseudo-classes ` array ` and ` matrix ` : such objects will have
their class attribute set to ` NULL ` .

` isS4 ` is [ primitive ](/link/primitive?package=base&version=3.6.2) .

##  See Also

` [ is.object ](/link/is.object?package=base&version=3.6.2) ` for a more
general test; [ Introduction
](/link/Introduction?package=base&version=3.6.2&to=methods) for general
information on S4; [ Classes_Details
](/link/Classes_Details?package=base&version=3.6.2&to=methods) for more on S4
class definitions.

##  Examples

[ Run this code
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2FisS4&utm_source=r-docs&utm_medium=docs&utm_term=isS4&utm_content=run_example_in_workspace)

    
    
    # NOT RUN {
    isS4(pi) # FALSE
    isS4(getClass("MethodDefinition")) # TRUE
    # }
    

Run the code above in your browser using  [ DataCamp Workspace
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2FisS4&utm_source=r-docs&utm_medium=docs&utm_term=isS4&utm_content=run_example_in_workspace)

Powered by  [ DataCamp ](https://www.datacamp.com/)
[ RDocumentation ](/)

Moon  [ ](https://github.com/datacamp/rdocumentation-2.0) [ Learn R
](https://www.datacamp.com/learn/r)

Search all packages and functions

[ base  (version  3.6.2  ) ](/packages/base/versions/3.6.2)

#  unname: Remove ` names ` or ` dimnames `

##  Description

Remove the ` [ names ](/link/names?package=base&version=3.6.2) ` or ` [
dimnames ](/link/dimnames?package=base&version=3.6.2) ` attribute of an  R
object.

##  Usage

    
    
    unname(obj, force = FALSE)

##  Arguments

obj

an  R  object.

force

logical; if true, the ` dimnames ` (names and row names) are removed even from
` [ data.frame ](/link/data.frame?package=base&version=3.6.2) ` s.

##  Value

Object as ` obj ` but without ` [ names
](/link/names?package=base&version=3.6.2) ` or ` [ dimnames
](/link/dimnames?package=base&version=3.6.2) ` .

##  Examples

[ Run this code
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2Funname&utm_source=r-docs&utm_medium=docs&utm_term=unname&utm_content=run_example_in_workspace)

    
    
    # NOT RUN {
    require(graphics); require(stats)
    
    ## Answering a question on 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] # The names are larger than the data ...
    barplot(unname(z), axes = FALSE)
    # }
    

Run the code above in your browser using  [ DataCamp Workspace
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2Funname&utm_source=r-docs&utm_medium=docs&utm_term=unname&utm_content=run_example_in_workspace)

Powered by  [ DataCamp ](https://www.datacamp.com/)
[ RDocumentation ](/)

Moon  [ ](https://github.com/datacamp/rdocumentation-2.0) [ Learn R
](https://www.datacamp.com/learn/r)

Search all packages and functions

[ base  (version  3.6.2  ) ](/packages/base/versions/3.6.2)

#  as.environment: Coerce to an Environment Object

##  Description

A generic function coercing an  R  object to an ` [ environment
](/link/environment?package=base&version=3.6.2) ` . A number or a character
string is converted to the corresponding environment on the search path.

##  Usage

    
    
    as.environment(x)

##  Arguments

x

an  R  object to convert. If it is already an environment, just return it. If
it is a positive number, return the environment corresponding to that position
on the search list. If it is ` -1 ` , the environment it is called from. If it
is a character string, match the string to the names on the search list.

If it is a list, the equivalent of ` [ list2env
](/link/list2env?package=base&version=3.6.2) (x, parent = emptyenv()) ` is
returned.

If ` [ is.object ](/link/is.object?package=base&version=3.6.2) (x) ` is true
and it has a ` [ class ](/link/class?package=base&version=3.6.2) ` for which
an ` as.environment ` method is found, that is used.

##  Value

The corresponding environment object.

##  See Also

` [ environment ](/link/environment?package=base&version=3.6.2) ` for creation
and manipulation, ` [ search ](/link/search?package=base&version=3.6.2) ` ; `
[ list2env ](/link/list2env?package=base&version=3.6.2) ` .

##  Examples

[ Run this code
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2Fas.environment&utm_source=r-docs&utm_medium=docs&utm_term=as.environment&utm_content=run_example_in_workspace)

    
    
    # NOT RUN {
    as.environment(1) ## the global environment
    identical(globalenv(), as.environment(1)) ## is TRUE
    try( ## <<- stats need not be attached
        as.environment("package:stats"))
    ee <- as.environment(list(a = "A", b = pi, ch = letters[1:8]))
    ls(ee) # names of objects in ee
    utils::ls.str(ee)
    # }
    

Run the code above in your browser using  [ DataCamp Workspace
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2Fas.environment&utm_source=r-docs&utm_medium=docs&utm_term=as.environment&utm_content=run_example_in_workspace)

Powered by  [ DataCamp ](https://www.datacamp.com/)
[ RDocumentation ](/)

Moon  [ ](https://github.com/datacamp/rdocumentation-2.0) [ Learn R
](https://www.datacamp.com/learn/r)

Search all packages and functions

[ base  (version  3.6.2  ) ](/packages/base/versions/3.6.2)

#  Foreign-internal: Internal Versions of the Foreign Function Interface

##  Description

Internal versions of ` [ .Call ](/link/.Call?package=base&version=3.6.2) ` and
` [ .External ](/link/.External?package=base&version=3.6.2) ` .

##  Usage

    
    
    .Call.graphics(.NAME, …, PACKAGE)
    .External.graphics(.NAME, …, PACKAGE)
            .External2(.NAME, …, PACKAGE)

##  Arguments

.NAME

a character string giving the name of a C function or Fortran subroutine, or
an object of class ` " [ NativeSymbolInfo
](/link/NativeSymbolInfo?package=base&version=3.6.2) " ` , ` " [
RegisteredNativeSymbol
](/link/RegisteredNativeSymbol?package=base&version=3.6.2) " ` or ` " [
NativeSymbol ](/link/NativeSymbol?package=base&version=3.6.2) " ` referring to
such a name.

…

arguments to be passed to the foreign function.

PACKAGE

see the corresponding argument of ` [ .Call
](/link/.Call?package=base&version=3.6.2) ` .

##  Value

An  R  object.

##  Details

The ` .graphics ` versions of ` .Call ` and ` .External ` are used when
calling code which makes low-level graphics calls. They take additional steps
to ensure that the device driver display lists are updated correctly.

` .External2 ` is an enhanced version of ` .External ` which passes additional
information in more arguments.

` .Call.graphics ` is used in package  grid  and ` .External.graphics ` and `
.External2 ` are used in package ` graphics ` .

These are primitive functions.

##  See Also

` [ .Call ](/link/.Call?package=base&version=3.6.2) ` .

Powered by  [ DataCamp ](https://www.datacamp.com/)
[ RDocumentation ](/)

Moon  [ ](https://github.com/datacamp/rdocumentation-2.0) [ Learn R
](https://www.datacamp.com/learn/r)

Search all packages and functions

[ base  (version  3.6.2  ) ](/packages/base/versions/3.6.2)

#  MathFun: Miscellaneous Mathematical Functions

##  Description

` abs(x) ` computes the absolute value of x, ` sqrt(x) ` computes the
(principal) square root of x, \\(\sqrt{x}\\).

The naming follows the standard for computer languages such as C or Fortran.

##  Usage

    
    
    abs(x)
    sqrt(x)

##  Arguments

x

a numeric or ` [ complex ](/link/complex?package=base&version=3.6.2) ` vector
or array.

##  S4 methods

Both are S4 generic and members of the ` [ Math
](/link/Math?package=base&version=3.6.2&to=%3DS4groupGeneric) ` group generic.

##  Details

These are [ internal generic
](/link/internal%20generic?package=base&version=3.6.2) [ primitive
](/link/primitive?package=base&version=3.6.2) functions: methods can be
defined for them individually or via the ` [ Math
](/link/Math?package=base&version=3.6.2&to=%3DS3groupGeneric) ` group generic.
For complex arguments (and the default method), ` z ` , ` abs(z) == [ Mod
](/link/Mod?package=base&version=3.6.2) (z) ` and ` sqrt(z) == z^0.5 ` .

` abs(x) ` returns an ` [ integer ](/link/integer?package=base&version=3.6.2)
` vector when ` x ` is ` integer ` or ` [ logical
](/link/logical?package=base&version=3.6.2) ` .

##  References

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

##  See Also

` [ Arithmetic ](/link/Arithmetic?package=base&version=3.6.2) ` for simple, `
[ log ](/link/log?package=base&version=3.6.2) ` for logarithmic, ` [ sin
](/link/sin?package=base&version=3.6.2) ` for trigonometric, and ` [ Special
](/link/Special?package=base&version=3.6.2) ` for special mathematical
functions.

‘ [ plotmath ](/link/plotmath?package=base&version=3.6.2) ’ for the use of `
sqrt ` in plot annotation.

##  Examples

[ Run this code
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2FMathFun&utm_source=r-docs&utm_medium=docs&utm_term=MathFun&utm_content=run_example_in_workspace)

    
    
    # NOT RUN {
    require(stats) # for spline
    require(graphics)
    xx <- -9:9
    plot(xx, sqrt(abs(xx)),  col = "red")
    lines(spline(xx, sqrt(abs(xx)), n=101), col = "pink")
    # }
    

Run the code above in your browser using  [ DataCamp Workspace
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2FMathFun&utm_source=r-docs&utm_medium=docs&utm_term=MathFun&utm_content=run_example_in_workspace)

Powered by  [ DataCamp ](https://www.datacamp.com/)
[ RDocumentation ](/)

Moon  [ ](https://github.com/datacamp/rdocumentation-2.0) [ Learn R
](https://www.datacamp.com/learn/r)

Search all packages and functions

[ micropan  (version  1.0  ) ](/packages/micropan/versions/1.0)

#  plot.Rarefac: Plotting and printing ` Rarefac ` objects

##  Description

Generic functions for plotting and printing the content of a ` Rarefac `
object.

##  Usage

    
    
    "plot"(x,type="b", pch=16, xlab="Genomes", ylab="Number of unique gene clusters", ... )
    "summary"(object, ...)
    "str"(object, ...)

##  Arguments

x

A ` Rarefac ` object, see below.

object

A ` Rarefac ` object, see below.

type

Type of plot, default is  "b"  , giving markers with lines between.

pch

Marker type, default is  16  , a filled circle.

xlab

Text for horizontal axis.

ylab

Text for vertical axis.

...

Optional graphical arguments.

##  Details

A ` Rarefac ` object is a small (S3) extension to a matrix. The first column
contains the cumulative number of unique gene clusters found when considering
1,2,...,G genomes in a pan-matrix. Thus, the ` Rarefac ` object is a matrix
with G rows. Any additional columns will hold similar numbers, but for random
shufflings of the genome's ordering. A ` Rarefac ` object is typically created
by the function ` [ rarefaction
](/link/rarefaction?package=micropan&version=1.0) ` . The ` [ plot.Rarefac
](/link/plot.Rarefac?package=micropan&version=1.0) ` function will display the
content of the ` Rarefac ` object as a plot of the mean value in rows
1,2,...,G, where G is the total number of genomes in the study. The ` [
summary.Rarefac ](/link/summary.Rarefac?package=micropan&version=1.0) `
function will display a text giving the same information as ` [ plot.Rarefac
](/link/plot.Rarefac?package=micropan&version=1.0) ` . The ` [ str.Rarefac
](/link/str.Rarefac?package=micropan&version=1.0) ` function will simply print
the number of genomes of the ` Rarefac ` object.

##  See Also

` [ rarefaction ](/link/rarefaction?package=micropan&version=1.0) ` , ` [
heaps ](/link/heaps?package=micropan&version=1.0) ` .

##  Examples

[ Run this code
](https://www.datacamp.com/datalab/preview?_tag=rdocs&rdocsPath=packages%2Fmicropan%2Fversions%2F1.0%2Ftopics%2Fplot.Rarefac&utm_source=r-docs&utm_medium=docs&utm_term=plot.Rarefac&utm_content=run_example_in_datalab)

    
    
    # Loading a Panmat objects in the micropan package
    data(list="Mpneumoniae.blast.panmat",package="micropan")
    
    # Computing Rarefaction
    rarefac.blast <- rarefaction(Mpneumoniae.blast.panmat,n.perm=100)
    
    
    # Plotting and printing the Rarefac object
    plot(rarefac.blast)
    summary(rarefac.blast)
    str(rarefac.blast)
    

Run the code above in your browser using  [ DataLab
](https://www.datacamp.com/datalab/preview?_tag=rdocs&rdocsPath=packages%2Fmicropan%2Fversions%2F1.0%2Ftopics%2Fplot.Rarefac&utm_source=r-docs&utm_medium=docs&utm_term=plot.Rarefac&utm_content=run_example_in_datalab)

Powered by  [ DataCamp ](https://www.datacamp.com/)