2012-07-08 46 views
1

一旦列表开始得到一点嵌套我挣扎多一点与他们(我认为其他人可能会与嵌套列表挣扎)。我有一份列表,我想以某种格式放在一起。下面是列表的例子:索引加入列表

ms2 <- list(list(" question", c(" thin", " thick"), " one", c(" simple", 
" big")), list(" infer", " theme", c(" strategy", " guess", " inform" 
), c(" big", " idea", " feel", " one")), list(
    "synthesi", c(" predict", " thin", " thick", " parts", " visual", 
    " determin", " schema", " connect", " background", " knowledge", 
    " strategy", " infer", " question", " importance"), NA_character_, 
    c(" things", " picture")), list(" visual", " strategy", " picture", 
    NA_character_), list(" question", " wonder", c(" them", " one" 
), NA_character_), list(" predict", NA_character_, c(" think", 
" guess", " wonder"), NA_character_)) 

我想前三个和最后三个列表合并在一起,得到的每一个在这个低于4个矢量2列出了(这仅仅是第一个列表)。

list(c("question", "infer", "synthesi", "visual"), 
    c("thin", "thick", "theme", "predict", "parts", 
     "visual", "determin", "schema", "connect", "backgraound", 
     "knowledge", "strategy", "infer", "question", "importance", 
     "strategy"), 
    c("one", "strategy", "guess", "inform", "picture"), 
    c("simple", "big", "idea", "feel", "one", "things", "picture")) 
+1

你给似乎不符合你想要什么 – GSee 2012-07-08 13:38:06

+0

说明呀输出这一个更难解释。你们知道了。我应该没有解释它,因为我知道我没有做好工作。我的例子实际上包含了太多(1:4而不是1:3)。 – 2012-07-08 15:52:24

+0

关于输出的解释是从头开始。 :( – 2012-07-08 16:10:18

回答

3

什么是这样的:

slice.it <- function(i,x) { 
    slice <- lapply(x, `[[`, i) 
    words <- unlist(slice) 
    words <- words[!is.na(words)] 
} 

lapply(1:4, slice.it, ms2[1:3]) 
# [[1]] 
# [1] " question" " infer" "synthesi" 

# [[2]] 
# [1] " thin"  " thick"  " theme"  " predict" " thin"  
# [6] " thick"  " parts"  " visual"  " determin" " schema"  
# [11] " connect" " background" " knowledge" " strategy" " infer"  
# [16] " question" " importance" 

# [[3]] 
# [1] " one"  " strategy" " guess" " inform" 

# [[4]] 
# [1] " simple" " big"  " big"  " idea" " feel" " one"  " things" 
# [8] " picture" 

注意,它不完全匹配您得到所需要的输出。也许你可以帮助澄清这些差异?

+0

这两个例子都可以工作,并且是可以普遍化的,因为我的理解是这个答案稍微可以理解,因为它让每一个片断都变得有些滑稽可笑,我解释得不是很糟糕,并给出了一个错误的例子(正如GSee指出的那样)找出我想要的东西 – 2012-07-08 16:08:47

3

这非常接近你给出的输出。不同之处在于我没有删除输入中所有单词的前导空格。如果删除了前导空格,你会不会有结果的第二个元素都“战略”和“战略”

lapply(1:4, function(i) { 
    unique(na.omit(unlist(lapply(ms2, "[", i)[1:4]))) 
}) 
#[[1]] 
#[1] " question" " infer" "synthesi" " visual" 
# 
#[[2]] 
#[1] " thin"  " thick"  " theme"  " predict" " parts"  
#[6] " visual"  " determin" " schema"  " connect" " background" 
#[11] " knowledge" " strategy" " infer"  " question" " importance" 
# 
#[[3]] 
#[1] " one"  " strategy" " guess" " inform" " picture" 
# 
#[[4]] 
#[1] " simple" " big"  " idea" " feel" " one"  " things" " picture" 
+0

你说得对我的描述与我的输出不符我的道歉尽管你和Flodel都提供了可推广的答案+1 – 2012-07-08 16:09:49

+1

很好很高兴你明白了这里有点不同(1:4,function(i){x < - unlist(lapply(ms2,“[”,i)[1:3]); x [!is.na (x)]})' – GSee 2012-07-08 16:33:06