我刚刚开始用R清理琴弦,到目前为止已经学到了很多东西。我所坚持的当前项目的一部分(我认为)主要与列表中的引用值有关。我正在尝试使用split-apply-combine方法,但最终无法回到我想要的数据形式。
我尝试了which()
,unlist()
和any()
的各种排列,但似乎无法得到我想要的东西 - 所以我坐下来,要求你的帮助。感谢。
我有很长的字符串列表......
> dput(x)
list(c("ACETATE", "RINGERS"), "ACETYLCYSTEINE", c("ACETYLSALICYLIC",
"ACID"), "ADIRAMYCIN", c("ADRENALINE", "00003901"), "ALEMTUZUMAB")
> x
[[1]]
[1] "ACETATE" "RINGERS"
[[2]]
[1] "ACETYLCYSTEINE"
[[3]]
[1] "ACETYLSALICYLIC" "ACID"
[[4]]
[1] "ADIRAMYCIN"
[[5]]
[1] "ADRENALINE" "00003901"
[[6]]
[1] "ALEMTUZUMAB"
我编写了简单的代码来删除列表中的特定单词...
bad.words <- c("ACID", "BASE", "HYDROCHOLIRDE", "STUFF")
a <- lapply(x, function(x) x %in% bad.words)
> a
[[1]]
[1] FALSE FALSE
[[2]]
[1] FALSE
[[3]]
[1] FALSE TRUE
[[4]]
[1] FALSE
[[5]]
[1] FALSE FALSE
[[6]]
[1] FALSE
我希望能够创建z
,使x
成为bad.words
。
> z
[[1]]
[1] "ACETATE" "RINGERS"
[[2]]
[1] "ACETYLCYSTEINE"
[[3]]
[1] "ACETYLSALICYLIC"
[[4]]
[1] "ADIRAMYCIN"
[[5]]
[1] "ADRENALINE" "00003901"
[[6]]
[1] "ALEMTUZUMAB"
答案 0 :(得分:4)
你快到了那里:
lapply(x, function(z) z[! (z %in% bad.words)])
或者,您可以
lapply(x, function(z) setdiff(z,bad.words))
对我来说似乎更优雅。