簡體   English   中英

用R從另一個列表創建一個列表

[英]Create a list from another list with R

我有一個字母清單l

[1] a b c
[2] b c a b

還有字母的向量v

[1] a
[2] b

我的目的是一個接一個地向量v的字母,並創建一個新列表,其中包含該字母之后出現的所有字母。 例如,我取v的第一個字母“ a”,然后創建出現在“ a”之后的字母列表,得到的是:

[1] b c
[2] b

在我拿第二個字母或v(即“ b”)並將其添加到列表后:

[3] c   
[4] c a b

所以最終結果是:

[1] b c
[2] b
[3] c   
[4] c a b

我不知道該怎么做,這似乎很復雜。

我也有這種格式的載體清單

[[1]]
[1] a
[2] b 
[3] c
[[2]]
[1] e
[2] g

嵌套的lapply

lapply(v, function(v, l) lapply(l, function(x, v) {
  if (!(v %in% x)) return(x) #the case of no match
  x[-seq_len(which.max(x == v))]
}, v = v), l = l)
#[[1]]
#[[1]][[1]]
#[1] "b" "c"
#
#[[1]][[2]]
#[1] "b"
#
#
#[[2]]
#[[2]][[1]]
#[1] "c"
#
#[[2]][[2]]
#[1] "c" "a" "b"

這是使用lapply的一種方法。

dat <- list( c("a", "b", "c"), c("b", "c", "a", "b"))
v <- c("a", "b")

result <- list()
for (l in v) {
  result[[l]] <- lapply(dat, function(z) z[(which(z == l)[1] + 1):length(z)])
}
result

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM