Hi,
According to its man page substring() "expands (its) arguments
cyclically to the length of the longest _provided_ none are of
zero length".
So, as expected, I get an error here:
> substring("abcd", first=2L, last=integer(0))
Error in substring("abcd", first = 2L, last = integer(0)) :
invalid substring argument(s)
But I don't get one here:
> substring(character(0), first=1:2, last=3L)
character(0)
which is unexpected.
Otherwise, yes substring() will recycle its arguments to the
length of the longest:
> substring("abcd", first=1:3, last=4:3)
[1] "abcd" "bc" "cd"
Cheers,
H.
--
Herv? Pag?s
Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M2-B876
P.O. Box 19024
Seattle, WA 98109-1024
E-mail: hpages at fhcrc.org
Phone: (206) 667-5791
Fax: (206) 667-1319
>>>>> "HP" == Herv? Pag?s <hpages at fhcrc.org> >>>>> on Thu, 03 Jun 2010 17:53:33 -0700 writes:HP> Hi, HP> According to its man page substring() "expands (its) arguments HP> cyclically to the length of the longest _provided_ none are of HP> zero length". HP> So, as expected, I get an error here: >> substring("abcd", first=2L, last=integer(0)) HP> Error in substring("abcd", first = 2L, last = integer(0)) : HP> invalid substring argument(s) HP> But I don't get one here: >> substring(character(0), first=1:2, last=3L) HP> character(0) HP> which is unexpected. according to the docu. My gut feeling would say that the documentation should be updated in this case, rather than the implementation. RFC! other opinions? HP> Otherwise, yes substring() will recycle its arguments to the HP> length of the longest: >> substring("abcd", first=1:3, last=4:3) HP> [1] "abcd" "bc" "cd" HP> Cheers, HP> H. HP> -- HP> Herv? Pag?s HP> Program in Computational Biology HP> Division of Public Health Sciences HP> Fred Hutchinson Cancer Research Center HP> 1100 Fairview Ave. N, M2-B876 HP> P.O. Box 19024 HP> Seattle, WA 98109-1024 HP> E-mail: hpages at fhcrc.org HP> Phone: (206) 667-5791 HP> Fax: (206) 667-1319 HP> ______________________________________________ HP> R-devel at r-project.org mailing list HP> https://stat.ethz.ch/mailman/listinfo/r-devel
> According to its man page substring() "expands (its) arguments > cyclically to the length of the longest _provided_ none are of > zero length". > > So, as expected, I get an error here: > > ?> substring("abcd", first=2L, last=integer(0)) > ?Error in substring("abcd", first = 2L, last = integer(0)) : > ? ?invalid substring argument(s) > > But I don't get one here: > > ?> substring(character(0), first=1:2, last=3L) > ?character(0) > > which is unexpected.If you want a set of string functions that strive to be simple and consistent you might want to look at the stringr package. And since it's a new package, I'm very keen to remove any inconsistencies. Hadley -- Assistant Professor / Dobelman Family Junior Chair Department of Statistics / Rice University http://had.co.nz/