2017-10-09 189 views
1

前兩位對於下面的載體,我將只保留每個整數的前兩個數字:由向量轉換成R:從提取嵌套列表元素

a <- c('1234 2345 345 234', '323 55432 443', '43 23345 321') 

我試圖做到這一點

a <- strsplit(a, ' ') 
a <- substr(a, start = 1, stop = 2) 

不過,這似乎只是提取誒級聯命令的開頭:

使用 strsplit,然後應用 substr到列表中嵌套列表

理想情況下,我將能夠矢量對象轉換成以下形式:

[[1]] 
[1] "12" "23" "34" "23" 

[[2]] 
[1] "32" "55" "44" 

[[3]] 
[1] "43" "23" "32" 

回答

3

如何在strsplit結果約

lapply(strsplit(a, " "), substr, 1, 2) 

這種不明確的lapply。這是因爲substr()試圖首先強制你的列表到一個字符向量(它不指望列表,因爲它是第一個參數)。你可以看到它看起來,如果你做

as.character(strsplit(a, ' ')) 
# [1] "c(\"1234\", \"2345\", \"345\", \"234\")" "c(\"323\", \"55432\", \"443\")"   
# [3] "c(\"43\", \"23345\", \"321\")" 
+0

那飛馳的工作提取前兩位 - 謝謝!另外,感謝您抽出時間來解釋我是如何誤解'substr()'的。 – kathystehl

0

在我們還可以從一個字邊界

library(stringr) 
str_extract_all(a, "\\b\\d{2}") 
#[[1]] 
#[1] "12" "23" "34" "23" 

#[[2]] 
#[1] "32" "55" "44" 

#[[3]] 
#[1] "43" "23" "32"