9

x成为向量

[1] "hi"            "hello"         "Nyarlathotep"

是否有可能产生一个向量,让我们说y,从xst 它的组件是

[1] "hi"            "hello"         "Nyarl"

?

换句话说,我需要 R 中的一个命令,它将文本字符串切割成给定的长度(在上面,长度 = 5)。

非常感谢!

4

3 回答 3

11

substring比我更明显的是strtrim

> x <- c("hi", "hello", "Nyarlathotep")
> x
[1] "hi"           "hello"        "Nyarlathotep"
> strtrim(x, 5)
[1] "hi"    "hello" "Nyarl"

substring非常适合从给定位置的字符串中提取数据,但strtrim完全符合您的要求。

第二个参数是widthsand ,它可以是宽度与输入向量长度相同的向量,在这种情况下,每个元素都可以修剪指定的量。

> strtrim(x, c(1, 2, 3))
[1] "h"   "he"  "Nya"
于 2013-09-05T09:03:55.230 回答
7

使用substring详见?substring

> x <- c("hi", "hello", "Nyarlathotep")
> substring(x, first=1, last=5)
[1] "hi"    "hello" "Nyarl"

最后更新 您也可以使用sub正则表达式

> sub("(.{5}).*", "\\1", x)
[1] "hi"    "hello" "Nyarl"
于 2013-09-05T08:55:07.807 回答
1

一个(可能)更快的替代方案是sprintf()

sprintf("%.*s", 5, x)
[1] "hi"    "hello" "Nyarl"
于 2018-12-14T15:11:21.417 回答