Используйте nchar()
.Это векторизация:
> test = c( "Jane" , "Jerry" , "Joan" )
> substr( test , 3 , nchar( test ) )
[1] "ne" "rry" "an"
Учитывая, что nchar будет возвращать вектор длин, и что substr также векторизован, и поэтому ожидает работы с векторными аргументами, одна потенциальная загадка - почему он даже принимает скалярный аргумент3
.Ответ здесь заключается в том, что скаляры для аргументов start и stop повторно используются для соответствия длине входного вектора символов.Таким образом, вы можете даже использовать 1: 2 в качестве аргумента начала и получать чередующиеся полные и почти полные строки:
> substr( test , 1:2 , nchar( test ) )
[1] "Jane" "erry" "Joan"