问题标签 [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.
list - 列表中的数据框;添加具有数据框名称的新变量
我有一个数据框列表,我最终想要合并这些数据框,同时保留其原始数据框名称或列表索引的记录。这将允许我在所有行中对等进行子集化。为此,我想为每个数据帧添加一个新变量“id”,其中包含它所属的数据帧的名称/索引。
编辑:“在我的真实代码中,数据框变量是通过使用以下代码读取多个文件创建的,所以我没有实际名称,只有 'files.to.read' 列表中的那些我不确定它们是否会对齐使用数据框顺序:
在几篇文章中强调了一些方法: Working-with-dataframes-in-a-list-drop-variables-add-new-ones和 Using-lapply-with-changeing-arguments
我尝试了两种类似的方法,第一种使用索引列表:
第二次尝试传递列表的 names()。
但是 names() 函数不适用于数据框列表;它返回 NULL。我可以在第一个示例中使用 seq_along(mylist) 吗?
处理整个“与源ID合并”的任何想法或更好的方法
编辑 - 在下面添加了解决方案:我已经使用 Hadleys 的建议和 Tommy 的轻推实现了一个解决方案,看起来像这样。
我使用 files.to.read 向量作为每个数据帧的 id
我也从使用 merge_recurse() 改变了,因为由于某种原因它非常慢。
谢谢大家。
r - 为什么 rapply 和 lapply 处理 NULL 的方式不同?
我知道列表中的 NULL 值有时会让人绊倒。我很好奇为什么在特定情况下lapply
似乎rapply
会以NULL
不同的方式对待价值观。
到现在为止还挺好。如果我们做同样的事情rapply
呢?
此示例非常简单且非递归,但您会在rapply
嵌套列表中看到相同的行为。
我的问题是为什么?如果如 中所宣传的那样?rapply
,它是“lapply 的递归版本”,为什么在这种情况下它们的行为如此不同?
r - 使用 lapply 和两个参数运行滞后回归
我正在运行多个单变量回归,就像在这个可重现的示例中一样:
a
包含 3 个单变量回归的列表。假设现在我想以 3 个滞后运行相同的回归:l<-c(0,1,4)
其中 0 当然是我已经得到的情况。有没有办法l
直接使用向量,比如
在这不起作用之后,我尝试了另一种方法并添加到以下向量:
要得到:
不幸的是,我不能用新的字符向量运行它, get() 没有帮助。我不明白为什么它可以使用vars
但不是lagged_vars
两个字符向量。
请注意,L()
语法来自 dynlm 包。附带问题:如果我只打印回归结果中的系数仍然标记为 get(x) - 我该如何更改它?
i,j 循环可能是可能的解决方案,但我宁愿使用 lapply 或这个系列中的其他东西......
编辑:
as.formula
不能与L()
from一起使用dynlm
。我收到此错误消息:
merge.zoo(log(GNP),L(log(M1),0),retclass =“list”,all = FALSE)中的错误:找不到函数“L”
编辑:发现一个有趣的帖子 bei Achim Zeileis指的是这个问题。
r - 将名称从一个列表分配给另一个
我有一堆动态创建的回归存储在一些名为regressions
. 现在我想有效地重命名它们的系数。到目前为止,我所拥有的是这个有效的循环:
在函数的帮助下,我已经尝试了很长一段时间来更普遍地完成这项工作,因为这不是我拥有的唯一回归列表。但是我无法让其他任何工作。这里主要基于 lapply 的其他一些尝试:
另一种尝试是编写一个带有 for 循环的函数,该循环在内部也可以作为 print 显示,但不会全局分配名称(存储回归列表的位置)。
啊,让我休息一下。
list - Question regarding llply or lapply - applying functions to data.frames in a list
Dear R user community,
I have many data.frames in a list, as follows (only one data.frame in the list of 21 shown for convenience):
If I work on each data.frame in the list individually I can create a zoo object from temp and date, as such:
The zoo object looks like this:
How do I use llply or apply (or similar) to work on the whole list at once?
The output needs to go into a new list of data.frames, or a series of independent data.frames (each one named as in the zoo example above). Note that the date column, although a regular time series (days), contains missing dates (in addition to NAs for temps of existing dates); the missing dates will be filled by the zoo function. The output data.frame with the zoo object will thus be longer than the original one.
Help kindly appreciated.
r - 避免 ODE 迭代求解中的循环
我正在将参数模型拟合到一些具有时间相关协变量的生存数据。拟合过程涉及迭代求解一些 ODE - 每个受试者每个时间间隔一个 ODE,但是手头间隔上 ODE 的初始条件是前一个间隔上 ODE 解的最后一个值。从这个意义上说,ODE 相互依赖。
我的问题归结为:现在,我正在通过循环迭代地求解这些 ODE,因为我需要使用前一个解决方案的最后一个值作为下一个解决方案的起点。问题是这种循环对于大型数据集会消耗大量时间。有什么方法可以让我使用 vapply 或其他矢量化函数来做同样的事情吗?
我一直在搜索档案,但没有任何方法可以解决矢量化依赖于先前值的操作的问题。
这是一个代码示例,它本身不会产生任何具有统计意义的东西,但说明了我的问题:
r - 在函数内部使用 get inside lapply
这似乎是一个过于复杂的问题,但它让我有些发疯了一段时间。也是出于好奇,因为我已经有了做我需要的方法,所以没那么重要。
在 R 中,我需要一个函数来返回一个包含所有参数和用户输入的值的命名列表对象。为此,我制作了以下代码(玩具示例):
所以当被问到时:
这个结果是完美的。问题是,当我尝试使用lapply
相同的目标以提高效率(和优雅)时,它不会像我想要的那样工作:
问题显然在于get
评估它的第一个参数(字符串,变量的名称)的环境。我部分地从错误消息中知道这一点:
而且,因为在.GlobalEnv
环境中存在具有正确名称的对象时, foo 会返回它们的值:
显然,get
默认情况下在 中求值时parent.frame()
,它会搜索.GlobalEnv
环境中的对象,而不是当前函数的对象。这很奇怪,因为该函数的第一个版本不会发生这种情况。
我尝试了许多选项来使函数get
在正确的环境中进行评估,但无法正确执行(我尝试过pos=-2,0,1,2
并envir=NULL
作为选项)。
如果有人碰巧比我更了解环境,特别是在这种“奇怪”的情况下,我很想知道如何解决这个问题。
谢谢你的时间,
胡安
r - 转换 for 循环以应用
在 R 中,如何使用 、 、 、 等函数apply
替换lapply
以下rapply
代码do.call
?
对于这部分:
我试过类似的东西:
哪个有效。但是对于slist[[s]] <- 0
同一个 for 循环中的那部分,我不知道该怎么做。
编辑:这就是我想要做的。对于向量u
,我正在生成该向量中所有子集的列表。然后对于每个子集,我将其分配给s
,然后将字符串s
用作 中元素的名称slist
。有点奇怪,我知道,但这是为了家庭作业。对于上面的代码,这将是 slist 的前 5 个元素:
是的,我只是想学习如何正确使用 apply 和 stuff。
r - 在 R 中使用多核分析 GWAS 数据
我正在使用 R 分析全基因组关联研究数据。我有大约 500,000 个潜在的预测变量(单核苷酸多态性,或 SNP),并想测试它们中的每一个与连续结果(在这种情况下是血液中的低密度脂蛋白浓度)之间的关联。
我已经编写了一个可以毫无问题地执行此操作的脚本。简单解释一下,我有一个数据对象,称为“数据”。每行对应于研究中的特定患者。有年龄、性别、体重指数 (BMI) 和血液 LDL 浓度列。还有 50 万列包含 SNP 数据。
我目前正在使用 for 循环来运行线性模型一百万次,如图所示:
所有这些工作正常。但是,我真的很想加快我的分析速度。因此,我一直在试验多核、DoMC 和 foreach 包。
我的问题是,有人可以帮助我使用 foreach 方案调整此代码吗?
我在显然有 16 个内核可用的 Linux 服务器上运行脚本。我尝试过使用 foreach 包,但使用它的结果相对较差,这意味着使用 foreach 运行分析需要更长的时间。
例如,我尝试保存线性模型对象,如下所示:
这比仅使用常规 for 循环花费的时间多一倍。任何有关如何更好或更快速地做到这一点的建议将不胜感激!我知道使用并行版本的 lapply 可能是一种选择,但也不知道该怎么做。
一切顺利,
亚历克斯
r - 为什么 R 的 by() 和 lapply() 之间的性能差异如此之大?
我有一个xts
包含多个股票代码时间序列的对象。我需要将xts
对象拆分为特定于符号的子组并处理每个符号的数据,然后重新组合xts
包含完整行集的原始矩阵中的所有子组。每个符号是一个介于 1 到 4 个字符之间的字段,用作将矩阵拆分为子组的因子索引。
这些是报告在调用时拆分我的矩阵的时间by()
,lapply()
并且ddply()
:
这篇出色的博客文章中提供了有关使用数据框和矩阵子组的更多信息。
为什么使用 lapply/split.default 时性能会有如此大的差异?