创建并应用计算向量中多个字符串长度的函数

Create and apply a function that calculates the length of many strings in a vector

假设我有一个长向量,其字符大致如下所示:

vec <- c("32, 25", "5", "15, 24")

我想应用一个函数,该函数为我提供以逗号分隔的任何元素的字符串数,并 returns 我为我提供具有任意长度的向量。使用 lapply 和我的玩具矢量,这是我的方法:

  lapply(vec, function(x) {
    a <- strsplit(x, ",")
    y <- length(a[[1:length(a)]])
    unlist(y[1:length(y)])
    })

[[1]]
[1] 2

[[2]]
[1] 1

[[3]]
[1] 2

这几乎给了我想要的东西,因为第一个元素有 2 个字符串,第二个元素有 1 个字符串,第三个元素有 2 个字符串。问题是我无法实现我的函数 returns 我是一个 c(2,1,2). 形式的向量 我正在使用这个函数在我正在工作的一些 data.frame 上创建一个新变量和。 任何想法将不胜感激。

你可以这样做:

stringr::str_count(vec, ",") + 1
#> [1] 2 1 2

或者,在基数 R 中:

nchar(gsub("[^,]", "", vec)) + 1
#> [1] 2 1 2