问题标签 [sapply]

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 投票
3 回答
5325 浏览

r - 比较同一向量的相邻元素(避免循环)

我设法写了一个for loop来比较以下向量中的字母:

test将返回

使用该功能,Comp()我可以检查一个字母是否与下一个字母匹配

导致;

这是有效的,但是数量很大时速度很慢。为此我尝试了sapply()

不幸的是它不起作用......(Error in i + 1 : non-numeric argument to binary operator)我无法弄清楚如何访问向量中的前一个字母来比较它。此外length(data)-1,“不比较”最后一个字母的 , 可能会成为一个问题。

谢谢大家的帮助!

干杯幸运

0 投票
7 回答
163444 浏览

r - 将函数应用于数据框中的每一列,观察每一列现有的数据类型

作为了解我的数据的一部分,我正在尝试获取大型数据框中每一列的最小值/最大值。我的第一次尝试是:

它将所有内容都视为字符向量,因为前几列是字符类型。因此,某些数字列的最大值为" -99.5".

然后我尝试了这个:

但它抱怨max 对 factor 没有意义。(lapply是一样的。)让我感到困惑的是,这个apply想法max对因素来说是完全有意义的,例如它为第 1 列返回了“ZEBRA”。

顺便说一句,我看了一下Using sapply on vector of POSIXct,其中一个答案是“当你使用 sapply 时,你的对象被强制转换为数字,...... ”。这是发生在我身上的事吗?如果是这样,是否有不强制的替代应用功能?当然,这是一种常见的需求,因为数据框类型的关键特性之一是每一列都可以是不同的类型。

0 投票
2 回答
739 浏览

r - which.min 在数据帧上的 sapply 内无法正常工作?

谁能解释在尝试使用 sapply 和 which.min 来查找满足条件的数据框中的第一行时发现的这种奇怪行为?

数据帧是 trApr;它按customer_id(递增)排序,然后是事务visit_date(递增)。对于每个 customer_id,我们想在 trApr 中找到第一笔交易的行索引。(每个 customer_id 的总交易数量是可变的,这无关紧要。)

代码的其他说明:

  • all_tr_cids只是排序的、唯一的 customer_id 的列表unique(trApr$customer_id):)
  • n:m 只是我在调试时用于获取一小部分数据帧的索引。但我想在整个 df 上做 sapply

这是有问题的代码:

sapply 返回的中间参差不齐的对象如下(它是 int 列表的 10 个列表)。

如果 which.min 不能处理那种结构,它真的应该发出警告,而不是愉快地返回一个 1 的列表。

0 投票
1 回答
443 浏览

r - 在 R 中进行多重最小成本分析的循环或 sapply 函数

我正在使用包 gdistance 进行最低成本分析。这个想法是通过具有定义的成本值的成本网格(栅格)确定从目标点到源的路径;该路径因此避免了具有高成本的像素,并且更喜欢具有低成本值的像素。对我的数据有用的代码是:

因此,CostTrans构成成本网格,Cherangfirstloc.utm[1,]是来自 Spatialpoints 数据帧(源)Cherangfirstloc.utm[132,]的第一个位置/点,是来自 Spatialpoints 数据帧(目的地)的最后一个位置/点。输出是连接两个位置/点的线。

但是,我现在想计算多个最小成本路径,因此源应该是数据帧的每一行,目标保持不变。这意味着下一个来源将是Cherangfirstloc.utm[2,], thenCherangfirstloc.utm[3,]等等。我认为这可以通过 for 循环或sapply函数来完成。不幸的是,我不知道如何制定这个。

你能给我一些关于如何制定这个迭代过程的提示吗? 如果我在这个地方问这个问题,我希望没关系。基本上,我只想知道如何遍历数据框。因此,gdistance 和最低成本分析如何工作并不重要。

以下是一些可用作示例数据的代码:

不幸的是,我不知道如何在 Spatialpoints 数据框中包含 c1、c2 和 c3,以便可以迭代。希望这仍然有帮助。

如果您能给我任何提示,我将不胜感激。感谢您的努力!

0 投票
1 回答
435 浏览

r - 函数与指定的 i 逐行运行良好,但不适用于函数调用

当我指定 i=4 或 i=10 并逐行运行函数定义中的代码时,它完全可以工作并分配new_list[[i]]. t(block)但是,当我这样做时

它返回错误消息

有谁知道为什么它不适用于函数调用?谢谢!!

0 投票
7 回答
95333 浏览

r - 如何从R中的列表中提取子集

我有一个相当简单的任务,但没有找到一个好的解决方案。

我想从mylist中提取列表中每个组件的子元素 3、5 和 9。我试过了,sapply[mylist,"[[",y]但运气不好!还有其他的,比如 vapply、lapply 等。在此先感谢您的帮助

毛里西奥·奥尔蒂斯

0 投票
2 回答
3081 浏览

r - R:循环遍历 data.table 中的列

我想确定大型 data.table 的列类。

有效,但显然本地副本存储到内存中:

循环似乎是不可能的,因为 data.table "with=FALSE" 总是导致 data.table。

一种快速且非常肮脏的方法是:

什么是最优雅和最有效的方法?

0 投票
4 回答
418 浏览

r - data.frame:通过将函数应用于行组来创建列

我有一个数据框,其中包含多次运行实验的结果,每个实验都用作日志,并带有自己的升序计数器。我想向数据框中添加另一列,该列对于下面示例中iteration的每个不同值具有最大值:experiment.num

在这个例子中,额外的列看起来像这样(因为所有子集都具有相同的最大值iteration):

我目前使用的天真的解决方案是:

我也曾经sapply(unique(df$experiment.num), function(n) c(n,max(df$iteration[df$experiment.num==n])))构建另一个框架,然后我可以将其与原始框架合并,但这两种方法似乎都比必要的复杂。

experiment.num列是一个因素,所以我认为我可以利用它来避免对所有行迭代地做这个幼稚的子集。

有没有更好的方法来获取 a 子集的最大值列data.frame

0 投票
1 回答
230 浏览

r - 作用于多个列表

我不使用那么多函数,但是当我这样做时,我倾向于使用 anon 函数和某种形式的apply. 然而,我现在正在尝试编写一个适用于列表中项目的函数。

有两个列表,每个列表都有很多项目(我的意思是例如项目mylist1[1])。所有项目都是数据框。我想从中获取第一个数据帧mylist1和第一个数据帧,mylist2并在这些数据帧中的列上运行一堆函数。然后拿第二个mylist1项目和第二个mylist2项目等等......

下面是我习惯写的那种东西,但在这种情况下显然不适用于两个列表。谁能帮助我快速找出我应该如何使用sapply似乎导致主要问题的方法以外的方法来解决这个问题。

我也只是认为人们是否认为这样做会更好subsetz而不是split那样做?

0 投票
2 回答
1495 浏览

r - 如何将 sapply 重写为 for 循环

我想sapply用 for 循环替换的行为。(如果有兴趣,请参阅下面的原因。)

这是我的代码的 sapply 版本的简化:

这给了我:

(这很好,尽管顺便说一句,我实际上希望它转置,将 n 的值作为行,将 a, up, down, level 作为列。但是,没问题,我知道该怎么做。)

当我把它变成一个for循环时:

然后我收到 8 条警告消息,例如:

结果非常不同:

我有点明白发生了什么。我不知道的是获得我想要的结果的魔法咒语!我已经尝试将结果初始化为matrix()list()相反,具有相同的输出。

旁白:为什么我要使用 for 循环?我实际上想在 sapply 循环的每次传递中进行两次计算。换句话说,只进行 8 次调用,slow_function但返回 16 行结果。如果 sapply 允许它,我的代码将类似于:

所需的输出:(对不起,格式关闭,我必须手工制作)