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

use*_*549 7 r vector

我有矢量:

v <- c("godzilla", "jurassic", "googly")
Run Code Online (Sandbox Code Playgroud)

我想要这个向量中每个元素的前3个字母.我想最终得到:

# "god"   "jur"   "goo"
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用apply,但它没有用.我该怎么办?

Rei*_*son 8

一种选择是substring():

> substring(v, first = 1, last = 3)
[1] "god" "jur" "goo"
Run Code Online (Sandbox Code Playgroud)

或者还有R版本, substr()

> substr(v, start = 1, stop = 3)
[1] "god" "jur" "goo"
Run Code Online (Sandbox Code Playgroud)

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

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

  • 如何将其应用于data.frame行中的向量?当我通过`df2 &lt;-df1%&gt;%mutate(y = substr(x,0,4))`应用于列时,我以串联列表的开头和第一个元素的第一个字符结尾列表,例如`“ c(” 12“” c(“ 24”“ c(” 34“`。 (2认同)

ags*_*udy 8

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

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

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