2015-04-15 2 views
3

Мне нужен список или вектор всех имен объектов с последним символом, обрезанным. Например:Неисправность, использующая функцию ls() внутри функции substr()

# if i have two objects (ob1 and other1) 
ls() 
##"ob1" "other1" 
# I want "ob" "other" 

Я пытаюсь использовать substr() в цикле с ls(), но я получаю вектор пустых символов («»). Игнорируя цикл на данный момент, что мне нужно сделать, чтобы получить ls()[1] для правильной обработки внутри substr()?

ob1 <– NULL 
substr(ls()[1],1,length(ls()[1])-1) 
##[1] "" 

substr(paste(ls()[1]),1,length(ls()[1])-1) 
##[1] "" 

substr(toString(ls()[1]),1,length(ls()[1])-1) 
##[1] "" 

substr(as.character(ls()[1]),1,length(ls()[1])-1) 
##[1] "" 

ответ

1

Вы используете length() вместо nchar(). Измените это, и с вами все будет в порядке.

2

Вы можете использовать функцию sub, чтобы удалить последний символ из строки.

> x <- c("ob1", "other1") 
> sub(".$", "", x) 
[1] "ob" "other" 
+0

за последние 2, вы можете использовать 'sub (". {2} $ "," ", x)' также увеличивать число, присутствующее в фигурной скобке, чтобы удалить символы из последних. И я думаю, вам нужно использовать 'ls()' вместо 'x' в приведенном выше коде. –

Смежные вопросы