R strsplit,嵌套列表蓝调

时间:2016-02-05 20:16:34

标签: r string list nested-lists strsplit

我在R中遇到这个问题,我想在逗号上拆分字符串,然后在分号上进一步拆分,但只保留分号前面的第一项,即ee和jj。我尝试了很多东西,但嵌套列表似乎太复杂了!

这就是我正在做的事情:

{"meteorRelease":"METEOR@1.2.1", "ROOT_URL":"https://myIP/", "ROOT_URL_PATH_PREFIX":"", "DDP_DEFAULT_CONNECTION_URL":"https://myIP", "autoupdateVersionCordova":"ee806cb3e614acbfaad7031f7964c254c9fc7e39", "appId":"1rm26uv1lh7ui31i489b2"}"

这是我想要的输出

d <- c("aa,bb,cc,dd,ee;e,ff",
       "gg,hh,ii,jj;j")

e=strsplit(d,",")
myfun2 <- function(x,arg1) {
 strsplit(x,";")
}
f=lapply(e,myfun2)
f=
 [[1]]
 [[1]][[1]]
 [1] "aa"

 [[1]][[2]]
 [1] "bb"

 [[1]][[3]]
 [1] "cc"

 [[1]][[4]]
 [1] "dd"

 [[1]][[5]]
 [1] "ee" "e" 

 [[1]][[6]]
 [1] "ff"

 [[2]]
 [[2]][[1]]
 [1] "gg"

 [[2]][[2]]
 [1] "hh"

 [[2]][[3]]
 [1] "ii"

 [[2]][[4]]
 [1] "jj" "j" 

我尝试了一些使用lapply来嵌套列表的东西&#34; f&#34;和使用&#34; [[&#34;和&#34; [&#34;但没有成功。

非常感谢任何帮助。 (我知道我错过了一些愚蠢的东西,但现在却无法解决这个问题!)

2 个答案:

答案 0 :(得分:2)

我们可以使用gsub来匹配模式;,后跟一个或多个字母字符,替换为'',然后将strsplit分割为{{1} }}

,

答案 1 :(得分:1)

这是你的代码

d <- c("aa,bb,cc,dd,ee;e,ff", "gg,hh,ii,jj;j")
e <- strsplit(d,",")
myfun2 <- function(x,arg1) { strsplit(x,";") }
f <- lapply(e,myfun2)

如果我们从您的f开始,那么下一步就是

lapply(f,function(x) mapply(`[`,x,1))
[[1]]
[1] "aa" "bb" "cc" "dd" "ee" "ff"

[[2]]
[1] "gg" "hh" "ii" "jj"

基本上,你需要一个内部和外部类型应用函数来降低两个嵌套级别。