如何在R-lappy语句中合并索引

如何在R-lappy语句中合并索引,r,for-loop,lapply,R,For Loop,Lapply,我试图将循环重写为lappy语句,但我陷入了困境,因为我不知道如何将索引合并到函数中。我最近问了一个问题,得到了一个很好的回答,但这个回答并没有概括到这个问题上 我正在处理一组记录,这些记录的结构是长格式的。我可以通过一个唯一的字符串来识别每个唯一的记录集。我要修复的行总是正好出现在这些唯一字符串之后的两行 以下是可复制的数据: text <- c("_____", "A: aaa", "bbb", "C: cccc", "D: dddd", "_____", "A: aaa:aa

我试图将循环重写为lappy语句,但我陷入了困境,因为我不知道如何将索引合并到函数中。我最近问了一个问题,得到了一个很好的回答,但这个回答并没有概括到这个问题上

我正在处理一组记录,这些记录的结构是长格式的。我可以通过一个唯一的字符串来识别每个唯一的记录集。我要修复的行总是正好出现在这些唯一字符串之后的两行

以下是可复制的数据:

text <- c("_____", "A: aaa", "bbb", "C: cccc", "D: dddd",
    "_____", "A: aaa:aaa", "bbb", "C: ccc", "D: dddd", "E: eeee",
    "_____", "A: aaa", "bbb:bbb", "C: ccc", "D: dddd")

text要将索引合并到
lappy
,请执行以下操作:

lapply(1:length(text), function(i) doStuff(text[i]) )

我没有进一步调查这个问题。但是你可以通过
indx-ahhh。。。这是有道理的!我当然可以做到。我仍然对在
lapply
中加入索引以供学习感到好奇。如果你想在
sapply
中使用
indx
,或许
text[indx+2]@akrun中做同样的事情,你的第一条评论是完美的。您的第二条评论澄清了我为更好地理解应用函数而试图理解的内容。它向您展示了在
lappy
调用中访问列表索引的几种不同方式。将for循环体设为函数,并从
lappy
调用它。如果你只是想让你的代码更快,把for循环放在一个函数中,编译它(通过编译器包),它可能会比
lappy
更快。如果将整个for循环体更改为仅
if(grepl(“\uuuuuuuuuuuuuuuuuu”),text[i-2],fixed=TRUE)[1L])text[i],则速度会更快
lapply(1:length(text), function(i) doStuff(text[i]) )