2016-05-27 3 views
-3

Я хочу удалить некоторые данные из памяти. Это хорошо работает сremove() через lapply не работает

remove(ttest,inherits=T) 

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

lapply(tablenames,remove) 

где tablenames это просто список с tablenames в это:

tablenames 

[[1]] 
[1] ttest 
Levels: testsheet ttest ttest2 

[[2]] 
[1] testsheet 
Levels: testsheet ttest ttest2 

[[3]] 
[1] ttest2 
Levels: testsheet ttest ttest2 

Я всегда получаю обратно сообщение об ошибке:

Error in FUN(X[[i]], ...) : ... muss Namen oder Zeichenketten enthalten

, который переводится как «должно содержать имя или строку».

Далее я попытался обернуть функцию удалить в другую функцию, а также придать ему наследованные = параметр T:

clean <- function(table) {rm(table, inherits=T)} 
> lapply(tablenames,clean) 
[[1]] 
NULL 

[[2]] 
NULL 

[[3]] 
NULL 

В таблицах все еще там. Что я могу сделать? Спасибо.

+0

Непонятный. Что ты хочешь? Вы хотите удалить некоторые элементы tablenamers? Который? – user31264

+0

Нет, я хочу удалить целые таблицы из памяти, как это делает rm (table) или remove (table). – mariego

+0

Почему вы не должны делать rm (tablenames)? – user31264

ответ

3

Вам не нужно делать ничего, что сложное. Если tablenames является символом вектор имен объектов должны быть удалены, то

rm(list = tablenames, inherits = TRUE) 

будет делать то, что я думаю, что вы хотите сделать.

+0

Отлично, спасибо. Я просто не знал, что список является допустимым вводом для функции. – mariego

+0

@mariego Список не разрешенный вход, символьный вектор является допустимым вводом. – bouncyball

+0

Хорошо, список = tablenames запутал меня. :) – mariego

1

Вместо использования lapply, мы должны использовать unlist:

rm(list = unlist(tablenames)) 
Смежные вопросы