R - 使用自动迭代避免循环

时间:2011-04-28 22:59:11

标签: r

这是一个人为的例子,我用来希望更好地理解R.让我们说我想要一个名为“test”的字符向量的子集。我想将每个元素值从第三个字符返回到最后一个字符。这不起作用:

test = c( "Jane" , "Jerry" , "Joan" )
substr( test , 3 , length( test ) )
expecting: "ne" , "rry" , "an"

如果没有for循环,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:10)

使用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"
相关问题