Предположим, у меня есть длинный вектор с символами, который более или менее похож на этот:
vec <- c("32, 25", "5", "15, 24")
Я хочу применить функцию, которая дает мне количество строк для любого элемента, разделенного запятой, и возвращает мне вектор любой индивидуальной длины. Используя 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 строки. Проблема в том, что я не могу добиться, чтобы моя функция возвращала мне вектор формы c(2,1,2).
, которую я использую для создания новой переменной для некоторых, с data.frame
которыми я работаю. Любая идея будет высоко оценена.
Решение проблемы
Вы можете сделать:
stringr::str_count(vec, ",") + 1
#> [1] 2 1 2
Или в базе R:
nchar(gsub("[^,]", "", vec)) + 1
#> [1] 2 1 2
Комментариев нет:
Отправить комментарий