在r中创建向量元素和的函数

在r中创建向量元素和的函数,r,matrix,vector,R,Matrix,Vector,所以我在r中创建了这个函数: v=1:4 h = function(x){sum(exp(x*v))} 为什么这不起作用?什么能使它以简单的形式工作 xv应该是(x,2x,3x,4x),exp(xv)应该是(exp(x),…,exp(4x)),这应该有效 编辑: 很抱歉,如果我最初的问题似乎无效,因为此函数不会生成任何错误消息。然而,地块(h)存在问题,不应如此。而且很多与其他命令的高级交互都会以这样或那样的方式出现问题。您应该将函数矢量化 链接: 更新:好的,一些代码 R中没有数字,只有向量

所以我在r中创建了这个函数:

v=1:4
h = function(x){sum(exp(x*v))}
为什么这不起作用?什么能使它以简单的形式工作

xv应该是(x,2x,3x,4x),exp(xv)应该是(exp(x),…,exp(4x)),这应该有效

编辑:


很抱歉,如果我最初的问题似乎无效,因为此函数不会生成任何错误消息。然而,地块(h)存在问题,不应如此。而且很多与其他命令的高级交互都会以这样或那样的方式出现问题。

您应该将函数矢量化

链接:

更新:好的,一些代码

R中没有数字,只有向量。数字是长度为1的原子向量。所以,每个函数应该期望有向量作为输入,产生向量作为输出。所有标准功能和操作都是矢量化的

使用您的功能,并将一些
print
s放入

h <- function(x){
    print(x)
    print(x*v)
    print(exp(x*v))        
    sum(exp(x*v))
}
h(c(0.5))
这样的调用将产生完全相同的结果。好的,到目前为止还不错。但是如果你用向量调用它,比如
h(c(0.5,1.0))
,你会得到一个值,这是错误的

那么,如何修复它-矢量化

hh <- Vectorize(h)

hh(c(0.5, 1.0))

h@brittenb根据预期的输出,
xv
,似乎向量应该是
长度(v)
@rawr。我知道你从哪里得到的。我的解释是
exp(xv)
应该等于
c(exp(x),exp(2*x),exp(3*x),exp(4*x))
,然后将其插入
sum
函数。等等,OP函数对我来说运行良好。还是没有达到预期的效果?如果是的话,预期的结果是什么?的确,它正在发挥作用,但显然没有达到预期的效果。输入和预期输出是什么?
hh <- Vectorize(h)

hh(c(0.5, 1.0))
[1] 0.5
[1] 0.5 1.0 1.5 2.0
[1] 1.648721 2.718282 4.481689 7.389056
[1] 1
[1] 1 2 3 4
[1]  2.718282  7.389056 20.085537 54.598150
[1] 16.23775 84.79102