我在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;但没有成功。
非常感谢任何帮助。 (我知道我错过了一些愚蠢的东西,但现在却无法解决这个问题!)
答案 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"
基本上,你需要一个内部和外部类型应用函数来降低两个嵌套级别。