使用 R 访问列表中的项目,在拆分和应用后组合
Accessing items in a list using R, combining after split and apply
我刚刚开始使用 R 清理字符串,到目前为止已经学到了很多东西。我坚持的当前项目部分(我认为)主要与列表中的引用值有关。我正在尝试拆分-应用-组合方法,但最后无法恢复到我想要的数据形式。
我已经尝试了 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"
你快到了:
lapply(x, function(z) z[! (z %in% bad.words)])
或者,您可以这样做
lapply(x, function(z) setdiff(z,bad.words))
这对我来说更优雅。
我刚刚开始使用 R 清理字符串,到目前为止已经学到了很多东西。我坚持的当前项目部分(我认为)主要与列表中的引用值有关。我正在尝试拆分-应用-组合方法,但最后无法恢复到我想要的数据形式。
我已经尝试了 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"
你快到了:
lapply(x, function(z) z[! (z %in% bad.words)])
或者,您可以这样做
lapply(x, function(z) setdiff(z,bad.words))
这对我来说更优雅。