使用 R 中的 sapply 和 char 在列表中拆分向量
Split vector in a list using sapply and char in R
这是我的矢量:
nms.new<-c("ABEV3.BBAS3", "ABEV3.BBAS3.new", "ABEV3.BRAP4", "ABEV3.BRAP4.new",
"ABEV3.BRKM5", "ABEV3.BRKM5.new", "ABEV3.CSAN3", "ABEV3.CSAN3.new",
"ABEV3.CSNA3", "ABEV3.CSNA3.new", "ABEV3.CYRE3", "ABEV3.CYRE3.new",
"ABEV3.DTEX3", "ABEV3.DTEX3.new", "ABEV3.ELPL4", "ABEV3.ELPL4.new",
"ABEV3.EVEN3", "ABEV3.EVEN3.new", "ABEV3.FIBR3", "ABEV3.FIBR3.new",
"ABEV3.GGBR4", "ABEV3.GGBR4.new", "ABEV3.GOAU4", "ABEV3.GOAU4.new",
"ABEV3.HYPE3", "ABEV3.HYPE3.new", "ABEV3.JBSS3", "ABEV3.JBSS3.new")
我想拆分这个向量,结果是这样的:
$`ABEV3.BBAS3`
[1] "ABEV3.BBAS3" "ABEV3.BBAS3.new"
$`ABEV3.BRAP4`
[1] "ABEV3.BRAP4" "ABEV3.BRAP4.new"
$ABEV3.BRKM5
[1] "ABEV3.BRKM5" "ABEV3.BRKM5.new"
$ABEV3.CSAN3
[1] "ABEV3.CSAN3" "ABEV3.CSAN3.new"
$ABEV3.CSNA3
[1] "ABEV3.CSNA3" "ABEV3.CSNA3.new"
$ABEV3.CYRE3
[1] "ABEV3.CYRE3" "ABEV3.CYRE3.new"
$ABEV3.DTEX3
[1] "ABEV3.DTEX3" "ABEV3.DTEX3.new"
.
.
.
.
.
我试过这个:
nms.new <- nms.new[sapply(nms.new, nchar) > 6]
我做错了什么?有什么帮助吗?
改用split
和gsub
> split(nms.new, gsub("\.new$", "", nms.new))
$ABEV3.BBAS3
[1] "ABEV3.BBAS3" "ABEV3.BBAS3.new"
$ABEV3.BRAP4
[1] "ABEV3.BRAP4" "ABEV3.BRAP4.new"
$ABEV3.BRKM5
[1] "ABEV3.BRKM5" "ABEV3.BRKM5.new"
$ABEV3.CSAN3
[1] "ABEV3.CSAN3" "ABEV3.CSAN3.new"
...
这是我的矢量:
nms.new<-c("ABEV3.BBAS3", "ABEV3.BBAS3.new", "ABEV3.BRAP4", "ABEV3.BRAP4.new",
"ABEV3.BRKM5", "ABEV3.BRKM5.new", "ABEV3.CSAN3", "ABEV3.CSAN3.new",
"ABEV3.CSNA3", "ABEV3.CSNA3.new", "ABEV3.CYRE3", "ABEV3.CYRE3.new",
"ABEV3.DTEX3", "ABEV3.DTEX3.new", "ABEV3.ELPL4", "ABEV3.ELPL4.new",
"ABEV3.EVEN3", "ABEV3.EVEN3.new", "ABEV3.FIBR3", "ABEV3.FIBR3.new",
"ABEV3.GGBR4", "ABEV3.GGBR4.new", "ABEV3.GOAU4", "ABEV3.GOAU4.new",
"ABEV3.HYPE3", "ABEV3.HYPE3.new", "ABEV3.JBSS3", "ABEV3.JBSS3.new")
我想拆分这个向量,结果是这样的:
$`ABEV3.BBAS3`
[1] "ABEV3.BBAS3" "ABEV3.BBAS3.new"
$`ABEV3.BRAP4`
[1] "ABEV3.BRAP4" "ABEV3.BRAP4.new"
$ABEV3.BRKM5
[1] "ABEV3.BRKM5" "ABEV3.BRKM5.new"
$ABEV3.CSAN3
[1] "ABEV3.CSAN3" "ABEV3.CSAN3.new"
$ABEV3.CSNA3
[1] "ABEV3.CSNA3" "ABEV3.CSNA3.new"
$ABEV3.CYRE3
[1] "ABEV3.CYRE3" "ABEV3.CYRE3.new"
$ABEV3.DTEX3
[1] "ABEV3.DTEX3" "ABEV3.DTEX3.new"
.
.
.
.
.
我试过这个:
nms.new <- nms.new[sapply(nms.new, nchar) > 6]
我做错了什么?有什么帮助吗?
改用split
和gsub
> split(nms.new, gsub("\.new$", "", nms.new))
$ABEV3.BBAS3
[1] "ABEV3.BBAS3" "ABEV3.BBAS3.new"
$ABEV3.BRAP4
[1] "ABEV3.BRAP4" "ABEV3.BRAP4.new"
$ABEV3.BRKM5
[1] "ABEV3.BRKM5" "ABEV3.BRKM5.new"
$ABEV3.CSAN3
[1] "ABEV3.CSAN3" "ABEV3.CSAN3.new"
...