2017-10-11 41 views
0

选择不到一元我有特征向量的列表,看起来像这样:功能单独工作正常,但与应用函数返回错误:试图在get1index

[[1]] 
    [1] "medical"    "center"    "name 
    [7] "laboratory"   "medicine"   "william"     
    [13] "laboratories"  "2431"    "highway"    
    ... 
    [680] 

    ... 

    [[100]] 
    .. 
    [590] 

列表中的每个成员所代表的患者和每个成员的角色矢量是他们的标记化医疗报告。我挖掘列表某些参数的每个成员,并正在使用下面的代码可以这样做:

​​

此函数使用单字符矢量对象时,它的工作很大。例如:

>f(P1, "histology results", upto = "diagnosed by")) 
    [1] highly differentiated, stage 4 out of 4 

其中P1是标记化单词的字符对象。

但是,使用列表和使用lapply函数,我得到一个错误。

> lapply(list, f, list[[i]], "histology results", upto = "diagnosed by") 
    Error in list[[i]] : 
     attempt to select less than one element in get1index 

当我运行选择列表的单个成员的函数时,它对每个成员都正常工作,没有错误抛出。仅举一例:

> f(list[[2]], "histology results", upto = "diagnosed by") 
    [1] "mildly differentiated stage 1 of 4" 

我在做什么错?

回答

0

通知i替代在个别情况下工作的列表的索引,例如, i=2f(list[[2]], "histology results", upto = "diagnosed by")

在你lapply功能,你实际上是调用一些类似于list[[list]]而非list[[1]], list[[2]], ..., list[[length(list)]]。因此,您希望lapply迭代的对象是索引1:length(list)的列表。尝试:

lapply(1:length(list), function(i) f(list[[i]], "histology results", upto = "diagnosed by")) 

还是给list对象lapply,直接就可以打电话给你的f功能,无需子集。试试:

lapply(list, function(i) f(i, "histology results", upto = "diagnosed by")) 
+0

这太神奇了!谢谢!虽然我仍然不太了解这个概念。 : -/ – MeeraWhy

+0

如果您熟悉for循环,则类似于:for(i in 1:length(list){f(list [[i]],“组织学结果”,upto =“由...诊断”) (1:length(list),function(i)print(i))','lapply(1:length(list),function(i)list) [i]]。 – Djork

+0

你也可以尝试'lapply(list,function(i)print(i)',then'lapply(list,function(i)f(i,“histology results”,upto =由“))诊断 – Djork

相关问题