【发布时间】:2018-08-03 08:29:30
【问题描述】:
我有一个列表,那是一个字符串。在此字符串中,字符由“;”分隔或者 ”,”。所以我必须使用“strsplit”。有了这个,在这个例子中,我最终得到了 3 个列表,其中 2 个列表有 3 个元素,最后一个列表中只有 2 个元素。
mylist = c("ac*, be, cd*; daa, efae*, fge*; gefa*, h")
Liste <- strsplit(strsplit(mylist , ";")[[1]], ",")
像这样使用“strsplit”的原因是当我有一个“;”在我的字符串和“,”作为逻辑 OR,然后它就像一个逻辑 AND,这意味着我必须使用每个列表中的一个元素,稍后在我的代码中。
所以 Liste 的输出将是
[[1]]
[1] "ac*" " be" " cd*"
[[2]]
[1] " daa" " efae*" " fge*"
[[3]]
[1] " gefa*" " h"
我要避免的是使用双 for 循环,如果可能的话,可能会使代码更快。
所以现在我使用嵌套的 for 循环来查看 mylist 中的每个元素。
for (c in 1:length(Liste)){
for (d in 1:length(Liste[[c]])){
# Extracting last character, matching if it is a wildcard
# Liste[[c]][d] Prints all elements from the list
# I need the double for-loop for this check
if (stri_sub(Liste[[c]][d],-1,-1) == '*')
DO SOMETHING
}
}
这里还能做什么?
【问题讨论】: