问题标签 [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.
r - 比较同一向量的相邻元素(避免循环)
我设法写了一个for loop
来比较以下向量中的字母:
test
将返回
使用该功能,Comp()
我可以检查一个字母是否与下一个字母匹配
导致;
这是有效的,但是数量很大时速度很慢。为此我尝试了sapply()
不幸的是它不起作用......(Error in i + 1 : non-numeric argument to binary operator
)我无法弄清楚如何访问向量中的前一个字母来比较它。此外length(data)-1
,“不比较”最后一个字母的 , 可能会成为一个问题。
谢谢大家的帮助!
干杯幸运
r - 将函数应用于数据框中的每一列,观察每一列现有的数据类型
作为了解我的数据的一部分,我正在尝试获取大型数据框中每一列的最小值/最大值。我的第一次尝试是:
它将所有内容都视为字符向量,因为前几列是字符类型。因此,某些数字列的最大值为" -99.5"
.
然后我尝试了这个:
但它抱怨max 对 factor 没有意义。(lapply
是一样的。)让我感到困惑的是,这个apply
想法max
对因素来说是完全有意义的,例如它为第 1 列返回了“ZEBRA”。
顺便说一句,我看了一下Using sapply on vector of POSIXct,其中一个答案是“当你使用 sapply 时,你的对象被强制转换为数字,...... ”。这是发生在我身上的事吗?如果是这样,是否有不强制的替代应用功能?当然,这是一种常见的需求,因为数据框类型的关键特性之一是每一列都可以是不同的类型。
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 的列表。
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,以便可以迭代。希望这仍然有帮助。
如果您能给我任何提示,我将不胜感激。感谢您的努力!
r - 函数与指定的 i 逐行运行良好,但不适用于函数调用
当我指定 i=4 或 i=10 并逐行运行函数定义中的代码时,它完全可以工作并分配new_list[[i]]
. t(block)
但是,当我这样做时
它返回错误消息
有谁知道为什么它不适用于函数调用?谢谢!!
r - 如何从R中的列表中提取子集
我有一个相当简单的任务,但没有找到一个好的解决方案。
我想从mylist中提取列表中每个组件的子元素 3、5 和 9。我试过了,sapply[mylist,"[[",y]
但运气不好!还有其他的,比如 vapply、lapply 等。在此先感谢您的帮助
毛里西奥·奥尔蒂斯
r - R:循环遍历 data.table 中的列
我想确定大型 data.table 的列类。
有效,但显然本地副本存储到内存中:
循环似乎是不可能的,因为 data.table "with=FALSE" 总是导致 data.table。
一种快速且非常肮脏的方法是:
什么是最优雅和最有效的方法?
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
?
r - 作用于多个列表
我不使用那么多函数,但是当我这样做时,我倾向于使用 anon 函数和某种形式的apply
. 然而,我现在正在尝试编写一个适用于列表中项目的函数。
有两个列表,每个列表都有很多项目(我的意思是例如项目mylist1[1]
)。所有项目都是数据框。我想从中获取第一个数据帧mylist1
和第一个数据帧,mylist2
并在这些数据帧中的列上运行一堆函数。然后拿第二个mylist1
项目和第二个mylist2
项目等等......
下面是我习惯写的那种东西,但在这种情况下显然不适用于两个列表。谁能帮助我快速找出我应该如何使用sapply
似乎导致主要问题的方法以外的方法来解决这个问题。
我也只是认为人们是否认为这样做会更好subset
,z
而不是split
那样做?
r - 如何将 sapply 重写为 for 循环
我想sapply
用 for 循环替换的行为。(如果有兴趣,请参阅下面的原因。)
这是我的代码的 sapply 版本的简化:
这给了我:
(这很好,尽管顺便说一句,我实际上希望它转置,将 n 的值作为行,将 a, up, down, level 作为列。但是,没问题,我知道该怎么做。)
当我把它变成一个for循环时:
然后我收到 8 条警告消息,例如:
结果非常不同:
我有点明白发生了什么。我不知道的是获得我想要的结果的魔法咒语!我已经尝试将结果初始化为matrix()
或list()
相反,具有相同的输出。
旁白:为什么我要使用 for 循环?我实际上想在 sapply 循环的每次传递中进行两次计算。换句话说,只进行 8 次调用,slow_function
但返回 16 行结果。如果 sapply 允许它,我的代码将类似于:
所需的输出:(对不起,格式关闭,我必须手工制作)