You can use a few useful commands to interact with the R session.
ls
will list all of the variables and functions stored in the global environment
(your working R session):
ls()
Output |
[1] "args" "dest_md" "op" "src_rmd" "x" "y"
|
Tip: hidden objects
Like in the shell, ls
will hide any variables or functions starting
with a "". by default. To list all objects, type ls(all.names=TRUE)
instead
Note here that we didn't give any arguments to ls
, but we still
needed to give the parentheses to tell R to call the function.
If we type ls
by itself, R prints a bunch of code instead of listing objects.
ls
Output |
function (name, pos = -1L, envir = as.environment(pos), all.names = FALSE,
pattern, sorted = TRUE)
{</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">missing</span><span class="pun">(</span><span class="pln">name</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
pos </span><span class="pun"><-</span><span class="pln"> tryCatch</span><span class="pun">(</span><span class="pln">name</span><span class="pun">,</span><span class="pln"> error </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">e</span><span class="pun">)</span><span class="pln"> e</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">inherits</span><span class="pun">(</span><span class="pln">pos</span><span class="pun">,</span><span class="pln"> </span><span class="str">"error"</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
name </span><span class="pun"><-</span><span class="pln"> substitute</span><span class="pun">(</span><span class="pln">name</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="kwd">is</span><span class="pun">.</span><span class="pln">character</span><span class="pun">(</span><span class="pln">name</span><span class="pun">))</span><span class="pln">
name </span><span class="pun"><-</span><span class="pln"> deparse</span><span class="pun">(</span><span class="pln">name</span><span class="pun">)</span><span class="pln">
warning</span><span class="pun">(</span><span class="pln">gettextf</span><span class="pun">(</span><span class="str">"%s converted to character string"</span><span class="pun">,</span><span class="pln">
sQuote</span><span class="pun">(</span><span class="pln">name</span><span class="pun">)),</span><span class="pln"> domain </span><span class="pun">=</span><span class="pln"> NA</span><span class="pun">)</span><span class="pln">
pos </span><span class="pun"><-</span><span class="pln"> name
</span><span class="pun">}
}
all.names <- .Internal(ls(envir, all.names, sorted))
if (!missing(pattern)) {</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">((</span><span class="pln">ll </span><span class="pun"><-</span><span class="pln"> length</span><span class="pun">(</span><span class="pln">grep</span><span class="pun">(</span><span class="str">"["</span><span class="pun">,</span><span class="pln"> pattern</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">fixed</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> TRUE</span><span class="pun">)))</span><span class="pln"> </span><span class="pun">&&</span><span class="pln">
ll </span><span class="pun">!=</span><span class="pln"> length</span><span class="pun">(</span><span class="pln">grep</span><span class="pun">(</span><span class="str">"]"</span><span class="pun">,</span><span class="pln"> pattern</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">fixed</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> TRUE</span><span class="pun">)))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pattern </span><span class="pun">==</span><span class="pln"> </span><span class="str">"["</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
pattern </span><span class="pun"><-</span><span class="pln"> </span><span class="str">"\\ [ "</span><span class="pln">
warning</span><span class="pun">(</span><span class="str">"replaced regular expression pattern '[' by '\\\\ ['"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">}
else if (length(grep("[^\\\\)\\(<-", pattern))) {</span><span class="pln">
pattern </span><span class="pun"><-</span><span class="pln"> </span><span class="kwd">sub</span><span class="pun">(</span><span class="str">"\\(<-"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"\\\\\\(<-"</span><span class="pun">,</span><span class="pln"> pattern</span><span class="pun">)</span><span class="pln">
warning</span><span class="pun">(</span><span class="str">"replaced '[<-' by '\\\\(<-' in regular expression pattern"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">}
}
grep(pattern, all.names, value = TRUE)
}
else all.names
}
<bytecode: 0x55abdef9e9c8>
<environment: namespace:base>
|
What's going on here?
Like everything in R, ls
is the name of an object, and entering the name of
an object by itself prints the contents of the object. The object x
that we
created earlier contains 1, 2, 3, 4, 5:
x
The object ls
contains the R code that makes the ls
function work! We'll talk
more about how functions work and start writing our own later.
You can use rm
to delete objects you no longer need:
rm(x)
If you have lots of things in your environment and want to delete all of them,
you can pass the results of ls
to the rm
function:
rm(list = ls())
In this case, we've combined the two. Like the order of operations, anything
inside the innermost parentheses is evaluated first, and so on.
In this case, we've specified that the results of ls
should be used for the
list
argument in rm
. When assigning values to arguments by name, you must
use the =
operator!!
If instead, we use <-
, there will be unintended side effects, or you may get an error message:
rm(list <- ls())
Error |
Error in rm(list <- ls()): ... must contain names or character strings
|
Tip: Warnings vs. Errors
Pay attention when R does something unexpected! Errors, like above,
are thrown when R cannot proceed with a calculation. Warnings on the
other hand usually mean that the function has run, but it probably
hasn't worked as expected.
In both cases, the message that R prints out usually give you clues
how to fix a problem.