2016-12-05 68 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"