2012-03-16 5 views
27

Я использую R в linux, только в командной строке.Список определенных переменных в R

Возвращаясь к проекту через некоторое время, я забыл имена переменных, которые использовал, а история команд R их не содержит.

Я, кажется, помню, что есть команда, в которой перечислены все пользовательские переменные, но не помню, что это такое, и не может найти ее в Интернете.

Как я могу перечислить все пользовательские переменные в R?

ответ

40

ls()

На странице справки:

‘ls’ and ‘objects’ return a vector of character strings giving the 
names of the objects in the specified environment. When invoked 
with no argument at the top level prompt, ‘ls’ shows what data 
sets and functions a user has defined. When invoked with no 
argument inside a function, ‘ls’ returns the names of the 
functions local variables. This is useful in conjunction with 
‘browser’. 

Edit: Я хотел бы отметить, что в список всех переменных, вам нужно будет использовать

ls(all.names = TRUE) 

иначе переменные, которые начинаются с точки не будет отображаться в листинге.

+0

Цифры. Я должен был догадаться об этом. Благодаря! –

+0

@Dason Есть ли разница между этим и 'objects()'? – frank

+1

@frank № https://github.com/wch/r-source/blob/51a4342f1b93d85bf6750cded97d8fa013984f46/src/library/base/R/attach.R#L200 – Dason

2

Вы можете проверить эту ссылку:

Tricks to manage the available memory in an R session

Он имеет большую функцию, чтобы показать объекты вместе с их использованием памяти. Это часть моего сценария запуска для R.

# Written by Dirk Eddelbuettel found here: https://stackoverflow.com/questions/1358003/tricks-to-manage-the-available-memory-in-an-r-session 

# improved list of objects 

.ls.objects <- function (pos = 1, pattern, order.by, 
         decreasing=FALSE, head=FALSE, n=5) { 
    napply <- function(names, fn) sapply(names, function(x) 
             fn(get(x, pos = pos))) 
    names <- ls(pos = pos, pattern = pattern) 
    obj.class <- napply(names, function(x) as.character(class(x))[1]) 
    obj.mode <- napply(names, mode) 
    obj.type <- ifelse(is.na(obj.class), obj.mode, obj.class) 
    obj.size <- napply(names, object.size) 
    obj.dim <- t(napply(names, function(x) 
         as.numeric(dim(x))[1:2])) 
    vec <- is.na(obj.dim)[, 1] & (obj.type != "function") 
    obj.dim[vec, 1] <- napply(names, length)[vec] 
    out <- data.frame(obj.type, obj.size, obj.dim) 
    names(out) <- c("Type", "Size", "Rows", "Columns") 
    if (!missing(order.by)) 
     out <- out[order(out[[order.by]], decreasing=decreasing), ] 
    if (head) 
     out <- head(out, n) 
    out 
} 
# shorthand 
lsos <- function(..., n=10) { 
    .ls.objects(..., order.by="Size", decreasing=TRUE, head=TRUE, n=n) 
} 
Смежные вопросы