Вы пытаетесь отправить данные www-form-urlencoded в конечную точку, ожидающую JSON.
Кроме того, ваш код работает нормально.
Это предполагает нечетное количество подчеркиваний и 99 или меньше.
library(stringr)
library(strex)
strings <- c('aa_bb_cc_dd_ee_ff', 'cc_hh_ff_zz', 'bb_dd')
splitMiddleUnderscore <- function(x){
nUnderscore <- str_count(x, '_')
middleUnderscore <- match(nUnderscore, seq(1, 99, 2))
str1 <- str_before_nth(x, '_', middleUnderscore)
str2 <- str_after_nth(x, '_', middleUnderscore)
c(str1, str2)
}
lapply(strings, splitMiddleUnderscore)
#[[1]]
#[1] "aa_bb_cc" "dd_ee_ff"
#[[2]]
#[1] "cc_hh" "ff_zz"
#[[3]]
#[1] "bb" "dd"
Вот простое решение, которое предполагает, что всегда есть нечетное количество подчеркиваний.
# Load libraries
library(stringr)
# Define function
even_split <- function(s){
# Split string
tmp <- str_split(s, "_")
lapply(tmp, function(x){
# Patch string back together in two pieces
c(paste(x[1:(length(x)/2)], collapse = "_"),
paste(x[(1+length(x)/2):length(x)], collapse = "_"))
})
}
# Example
strings <- c('aa_bb_cc_dd_ee_ff', 'cc_hh_ff_zz', 'bb_dd')
# Test function
even_split(strings)
#> [[1]]
#> [1] "aa_bb_cc" "dd_ee_ff"
#>
#> [[2]]
#> [1] "cc_hh" "ff_zz"
#>
#> [[3]]
#> [1] "bb" "dd"
Создано в 2019-01-18 с помощью пакета представитель (v0.2.1) sup>
Адаптируя ответ nhahtdh здесь здесь , все, что вам нужно сделать, это добавить шаг для подсчета подчеркивания (выполнено здесь с помощью str_count
) и вернуть среднее значение подчеркивания.
library(stringr)
strsplit(
strings,
paste0("^[^_]*(?:_[^_]*){", str_count(strings, '_') %/% 2, "}\\K_"),
perl = TRUE)
# [[1]]
# [1] "aa_bb_cc" "dd_ee_ff"
#
# [[2]]
# [1] "cc_hh" "ff_zz"
#
# [[3]]
# [1] "bb" "dd"