我有矢量:
v <- c("godzilla", "jurassic", "googly")
我想要此向量中每个元素的前3个字母。我想最终:
# "god" "jur" "goo"
我已尝试使用apply
,但它无效。我该怎么办?
答案 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"