问题标签 [lapply]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10360 浏览

r - 使用 *apply 函数访问数据框的列名

我需要使用 R *apply 函数为初学者制作教程(第一次不使用 reshape 或 plyr 包)

我尝试lapply(因为我阅读apply对数据帧不利)对此数据帧的一个简单函数,并且我想使用命名列来访问数据:

我有这个错误$ operator is invalid for atomic vectors,可能是因为数据框被 laply 修改了?...有没有最好的方法来使用 $ 命名列?

我用@DWin 回答解决了我的第一个问题。但我有另一个问题,误解,混合数据框(数字+字符):

在我的新用例中,我使用两个函数来计算距离,因为我的目标是比较所有其他点之间的距离点。

0 投票
12 回答
76541 浏览

r - 在 FUN 中访问 lapply 索引名称

有没有办法在我的 lapply() 函数中获取列表索引名称?

我之前问是否可以在 lapply()返回的列表中保留索引名称,但我仍然不知道是否有一种简单的方法可以在自定义函数中获取每个元素名称。我想避免在名称本身上调用 lapply,我宁愿在函数参数中获取名称。

0 投票
0 回答
73 浏览

r - 使用 lapply 获取参考号

可能重复:
访问 FUN 中的 lapply 索引名称

我想知道使用 lapply 时是否可以访问列表中对象的编号?

如果我使用 for(i in 1:100){.....} 函数,我可以使用 print(i) 来获得它,但是有没有办法使用 lapply 来做到这一点。我知道使用函数替代()如果我在第 6 个对象中,我可以返回一些列表 X[[6L]],但是是否只返回 6?

谢谢

0 投票
1 回答
504 浏览

r - 对多个文件应用 strsplit 函数

请有人在我的代码的第 4 步中发现我做错了什么(strsplit)?

我在目录中有 3 个文件,名称分别为 '101_E45_N66.csv'、'102_E46_N76.csv'、'103_E47_N86.csv'

我正在列表中读取它们并尝试拆分名称并在每个文件中添加 3 个新列,例如,'id'=101, 'easting' = E904690, 'Northing' = N936410

我从我之前的问题中知道我可以如何为单个文件执行如下操作:

但是,当我尝试创建一个 lapply 函数以应用于列表时,我不确定我做错了什么,因为它似乎只使用了文件名中的 1 个,并在我编写时在所有 3 个同名文件中添加了列文件回到目录中(请参阅我的代码的第 4 步),我使用的代码是:

您能否建议我在第 4 步中做错了什么?

非常感谢,
阿扬

我的样本数据:

0 投票
1 回答
280 浏览

r - 为什么重复调用 lapply 后闭包中的变量值会丢失?

我正在尝试使用一系列lapply调用来构建柯里化函数列表,理想情况下,在最后一次lapply调用时,它会返回最终所需的值。柯里化有效,但lapply似乎总是在第二次应用之后应用列表中的最后一个元素。

例子:

这按预期工作:

“破坏范围”的下一个lapplycurry

它似乎不是curryorrcurry函数的结果。使用roxygen'sCurry函数做同样的事情。通过上面的闭包创建curry.a或使用curry.a <- list(curry(myadd, 10), curry(myadd, 1000))也产生相同的结果。

当然还有最后的咖喱:

这里发生了什么?

0 投票
1 回答
601 浏览

r - 将列表参数传递给 llply

这个问题我一直没有找到满意的答案。假设我有一个功能:

a是一个包含许多data.frame对象的列表

b是一个包含特殊数据类的列表(如果有帮助,则ppp来自库的类)。spatstat

c是一个整数。

我想通过该功能推送一个列表:

列表项的名称b对应于 list 中 data.frames 中的“type”列a。所以内部功能foo我可以快速做到:

将 b 中的每个基础空间模式与 a 中的正确 data.frame 匹配。b 中有大约 10 个项目,a 中有 1000 个项目。不幸的是,这不起作用,因为llply(或lapply通常)尝试一次推送一个列表项a,即使对于参数列表b,并且将正确列表项b与正确数据帧匹配的两行代码失败,因为该函数不再具有整个列表b。有没有办法解决?

在紧要关头,我可以创建另一个列表(有效地结合aand b),其中每个列表项本身就是一个长度为 2 的列表,其中包含data.frame和对应的点模式对象。但这将导致 1000 多个冗余副本(并使在集群上运行此操作的效率大大降低)。

更新:我打算把它变成一个mclapply在集群上运行它。我不能这样做mapply(除非有mcmapply)。

0 投票
1 回答
1793 浏览

r - adjustOHLC - 需要通过代码的字符向量循环的解决方案

我想做的事情相当容易,但我无法弄清楚。我想我可以做类似于这里概述的事情

我有一个由 .xts 返回的 xts OHLC 对象的股票代码字符向量getSymbols。我想遍历符号中的每个代码并将符号传递给以adjustOHLC调整拆分:

似乎adjustOHLC没有抓住变量“符号”的值:

如果我使用get(symbols),我会得到相同的结果(我在本文顶部显示的链接中使用了类似的方法):

我想我也可以利用lapply它来加快速度,但我认为我首先遇到了上述问题。

lapply(symbols, function(x) adjustOHLC(x, adjust=c("split"), use.Adjusted=FALSE) )

似乎很容易 - 如果这太微不足道了,我深表歉意。感谢帮助。

0 投票
2 回答
129 浏览

r - 我怎样才能使这个 R 代码片段更快、更 R-ish?

来自其他各种语言,我发现 R 功能强大且直观,但我对它的性能并不感到兴奋。所以我决定尝试改进我编写的一些代码片段,并学习如何更好地在 R 中编写代码。

这是我写的一个函数,试图确定一个向量是否是二进制值(两个不同的值或只有一个值):

编辑:这个函数应该查看一个向量,然后c()如果它不是二进制值则返回,c(a, b)如果是,则返回,a 是较小的值,b 是较大的值(如果 a == b 则只是c(a, a)。例如,对于

我会这样做lapplyisBinaryVector得到:

在中等大小的数据集(大约 1800 * 3500,其中 2/3 是二进制值)上花费的时间大约是 15 秒。该集合仅包含浮点数。

无论如何我可以更快地做到这一点吗?

感谢您的任何投入!

0 投票
2 回答
313 浏览

r - 为 R 列表中大小不等的对象重复元素

在 R 中,我有一个由元素数量不等的对象组成的列表。例如,

我已经弄清楚如何找到任何对象的最大长度:

以及如何识别哪些对象不是最长的:

我现在需要做的:对于列表中的那些对象notlongest,重复它们的元素次数lmax并获得一个新列表。也就是说,对于对象 b 和 c,重复它们的元素两次,这样我就得到了一个看起来像这样的新列表:

我确信该lapply功能有一个简单的答案,但我无法弄清楚。抱歉,如果以前有人问过这个问题。谢谢!

0 投票
3 回答
3233 浏览

r - 在 R 中按名称从循环或 lapply 调用列表

我正在尝试使用“按”调用的输出,该调用很容易转换为列表……但有时列表仍然不符合我的要求