Вот вариант с tidyverse
. Создайте data_frame
с 'var1', separate
в три столбца на основе индекса позиции, удалите ,
в конце строки в столбце 'v3', создайте столбец группировки с gl
, чтобы сгруппировать строк в каждых 5 строках, сгруппированных по 'grp', 'v1' и 'v2', summarise
по 'v3' путем paste
элементов v3 в одну строку
library(tidyverse)
data_frame(var1) %>%
separate(var1, into = paste0('v', 1:3), sep= c(1, 5)) %>%
mutate(v3 = str_remove(v3, ",$")) %>%
group_by(grp = as.integer(gl(n(), 5, n())), v1, v2) %>%
summarise(v3 = toString(v3)) %>%
ungroup %>%
select(-grp)
# A tibble: 3 x 3
# v1 v2 v3
# <chr> <chr> <chr>
#1 1 0300 010118, 02, 03, 0405, 0512, 0612, 0717
#2 1 0310 010618, 0221, 0315, 0412, 0517, 0612,0729
#3 1 4510 010517, 0212, 03, 0465, 0588, 0651, 0777
Или мы можем сделать это в base R
, создав разделитель в упомянутых позициях, а затем использовать read.csv
df1 <- read.table(text= sub("^(.)(.{4})(.*),?$", "\\1-\\2-\\3", var1),
sep="-", header = FALSE, stringsAsFactors = FALSE, col.names = paste0("v", 1:3))
df1$grp <- as.integer(gl(nrow(df1), 5, nrow(df1)))
aggregate(v3 ~ ., df1, FUN = toString)[-3]
Вы просто распечатали бы его в основном и возвратили бы ту информацию с помощью JavaScript:
public function test() {
$somenumber = $this->input->post('someNumber');
if ($somenumber == 12) {
print "Number is 12";
} else {
print "Number is not 12";
}
}
Ваш JavaScript мог бы выглядеть примерно так:
var xhr;
xhr = new XMLHTTPRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
// this is where the return information is
alert('Status: '+xhr.status+' Response: '+xhr.responseText);
}
}
xhr.open('POST', '/front/test');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send('someNumber=12');
код выше не принимает во внимание конкретные вопросы браузера, но должен работать на firefox/ie7, по крайней мере, я верю.
вот пример jQuery всего вышеупомянутого:
var options = {
'someNumber' : 12
}
$.post('/front/test', options, function(data) {
alert(data); // should print "Number is 12"
});