首页 > 解决方案 > 如何将 R 向量中每个元素的长度传递给 substr 函数?

问题描述

我有以下向量。

v <- c('X100kmph','X95kmph', 'X90kmph', 'X85kmph', 'X80kmph',
       'X75kmph','X70kmph','X65kmph','X60kmph','X55kmph','X50kmph',
       'X45kmph','X40kmph','X35kmph','X30kmph','X25kmph','X20kmph',
       'X15kmph','X10kmph')

我想提取代表速度的数字。它们都从第二个位置开始,但在不同的位置结束,所以我需要(length of element i) - 4作为结束位置。

以下不适用于length(v)返回向量的长度而不是每个元素的长度。

vnum <- substr(v, 2, length(v)-4)

也试过lengths()了,但不起作用。

如何将每个元素的长度提供给substr

上下文

v实际上代表一个Speed小标题中的一个字符列(称为 ),我试图将其突变为相应的数字列。

mytibble <- mytibble %>%
  mutate(Speed = as.numeric(substr(Speed, 2, length(Speed) - 4)))

标签: rsubstr

解决方案


按照tmfmnk 的建议使用nchar()而不是解决问题!length()

vnum <- substr(v, 2, nchar(v)-4)

推荐阅读