如何对字符串向量中的每个元素进行子串?

时间:2014-06-18 17:49:36

标签: r vector

我有矢量:

v <- c("godzilla", "jurassic", "googly")

我想要此向量中每个元素的前3个字母。我想最终:

# "god"   "jur"   "goo"

我已尝试使用apply,但它无效。我该怎么办?

3 个答案:

答案 0 :(得分:7)

一个选项是substring()

> substring(v, first = 1, last = 3)
[1] "god" "jur" "goo"

或R版本substr()

> substr(v, start = 1, stop = 3)
[1] "god" "jur" "goo"

请注意所需的首字母和最后一个字符的不同名称。

由于这两个函数都是矢量化的,因此此处不需要apply()和朋友。

答案 1 :(得分:7)

为了好玩,你可以在这里使用正则表达式:

sub('(^.{3}).*','\\1',v)
[1] "god" "jur" "goo"

这是另一种矢量化解决方案。

答案 2 :(得分:2)

@Gavin Simpson的回答是正确的方法,但如果你想在这里使用apply()和朋友,你可以尝试以下方法:

> sapply(strsplit(v, ""), function(x) paste0(x[1:3], collapse=""))
[1] "god" "jur" "goo"