2016-12-05 4 views
0

Допустим, я хочу разделить x <- 1:100 на 10 различных кусков, я легко могу это сделать с split(x, sort(x%%10) поскольку x является целым числом.Расщепление список/вектор специального символа в R

Что делать, если я тусклый, чтобы разделить y на 3 куски, где y <- 1_1, 1_2, ... 1_n, 2_1, 2_2, ... 2_n, 3_1, 3_2, ...3_n где n = 100.

Первый кусок составляет от 1_1, 1_2, ... 1_n.

Второй кусок от 2_1, 2_2, ... 2_n

Третий кусок от 3_1, 3_2, ...3_n

Я попробовал подобный подход, как x, но я получил сообщение об ошибке в In Ops.factor(holding, 10) : ‘%%’ not meaningful for factors. Я подозреваю, что символ подчёркивания является виновником.

Может ли кто-нибудь вести меня через это?

ответ

3

Вы должны быть в состоянии сделать это с помощью:

split(y,gsub("_\\d+$","",y)) 

Здесь мы создаем factor с помощью gsub("_\\d+$","",y), который извлекает первую цифру, предшествующую "_" от y. Для иллюстрации предположим, что y:

y <- c("1_1","1_2","1_11","1_100","2_1","2_2","2_11","2_100","3_1","3_2","3_11","3_100") 
split(y,gsub("_\\d+$","",y)) 
##$`1` 
##[1] "1_1" "1_2" "1_11" "1_100" 
## 
##$`2` 
##[1] "2_1" "2_2" "2_11" "2_100" 
## 
##$`3` 
##[1] "3_1" "3_2" "3_11" "3_100" 
Смежные вопросы