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

nszi6y05  于 2023-01-06  发布在  其他
关注(0)|答案(4)|浏览(137)

我有向量:

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

我需要这个向量中每个元素的前3个字母。我希望得到:

# "god"   "jur"   "goo"

我已经用apply试过了,但是没有用,怎么办?

vpfxa7rd

vpfxa7rd1#

一个选项是substring()

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

或者R版本,substr()

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

注意所需的首字符和末字符的不同名称。
由于这两个函数都是矢量化的,所以这里不需要apply()和朋友。

nkoocmlb

nkoocmlb2#

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

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

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

06odsfpq

06odsfpq3#

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

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

g52tjvyc4#

stringr选项为str_sub

str_sub(v, 1, 3)
#[1] "god" "jur" "goo"

以及str_sub_all,用于每个字符串中的多个子字符串:

str_sub_all(v, c(1, 2), c(3, 4))
# [[1]]
# [1] "god" "odz"
# 
# [[2]]
# [1] "jur" "ura"
# 
# [[3]]
# [1] "goo" "oog"

相关问题