gpt4 book ai didi

r - 使用 vapply 在向量上应用一个简单的函数

转载 作者:行者123 更新时间:2023-12-01 00:40:07 25 4
gpt4 key购买 nike

这个问题有点两面性。首先,我试图找出在向量上实现函数的简单实现的最佳方法。其次,我试图理解 vapply 中 FUN.VALUE 的含义。

我已经定义了一个简单的半波整流函数:

Fun = function(x) x[x<0]=0

然后我定义一个向量:
A = -10:10

我希望将此函数应用于向量。我尝试了多种方法,但无法弄清楚如何轻松完成。

我总能做到
A[A<0]=0

但这违背了使用函数的目的。

我尝试定义函数,使其适用于向量的每个元素,而不是整个向量:
Fun = function(x) {if (x<0) {x=0} }

我不能使用apply,因为apply 似乎只在您应用函数的对象具有维度时才起作用,并且向量由于某种原因在R 中没有维度。

如果我使用 lapply,输出对象的每个元素都会得到 NULL 或 0,具体取决于我使用的上述两个函数中的哪一个。

对于 vapply,我对 FUN.VALUE 的文档没有任何意义

这是它所说的:

FUN.VALUE
a (generalized) vector; a template for the return value from FUN. See ‘Details’.



并在详细信息中:

vapply returns a vector or array of type matching the FUN.VALUE. If length(FUN.VALUE) == 1 a vector of the same length as X is returned, otherwise an array. If FUN.VALUE is not an array, the result is a matrix with length(FUN.VALUE) rows and length(X) columns, otherwise an array a with dim(a) == c(dim(FUN.VALUE), length(X)).



这对我来说毫无意义。在我的例子中,A 是一个有 20 个元素的向量,显然我希望输出是一个 20 个元素的向量。那么如何指定一个通用的 20 元素向量模板呢?这样的模板的长度不是 20,而不是 1?

我真的很感激这里的一些帮助。我发现文档非常令人沮丧,而且很难判断是因为我遗漏了一些明显的东西,还是文档含糊不清。

最佳答案

你的函数有一个错误。代替

Fun = function(x) x[x<0]=0

你实际上想要:
correct_fun = function(x){
x[x<0]=0
return(x)
}

按原样,您的函数目前没有返回任何内容。它修改了 x但不返回它,所以它只是随着函数而消失。正在执行 correct_funA我得到:
[1]  0  0  0  0  0  0  0  0  0  0  0  1  2  3  4  5  6  7  8  9 10

关于r - 使用 vapply 在向量上应用一个简单的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38061055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com