R中的循环和函数

时间:2015-06-08 19:57:02

标签: r

我想做以下事情:

#choosing one column called "z" from select 
select<-read.table(file='dane.txt', header=TRUE)
n=select$z

#defining f function
f<-function(redshift) {
  0.2*(sqrt(0.3*((1+redshift)^3)+0.7*((1+redshift)^2)+1))^(-1)
}

 # for all values from column "z" I want to calculate the integral from 0 up to value from column "z"
for(i in n){
  int[i]<-integrate(f(i),0,i)
}

对于列“z”的所有值,我想计算从0到列“z”的值的积分,我想保存文件中每行的结果,名称为int。 为什么它不起作用?现在它给了我错误:“match.fun(f)中的错误:'f(i)'不是函数,字符或符号”。请帮忙。

1 个答案:

答案 0 :(得分:0)

由于没有示例数据,我假设某些函数已定义:

n = as.vector(runif(n=100, min=-3, max=10))
num.obs = length(n)

像你一样定义你的功能:

f<-function(redshift) {
  0.2*(sqrt(0.3*((1+redshift)^3)+0.7*((1+redshift)^2)+1))^(-1)
}

您希望将值分配给int的方式,您必须先对其进行初始化,然后对索引进行迭代,而不是对n的值进行迭代。 integrate为您提供了一个列表,但我想您对该值感兴趣。

int=matrix(NA, nrow=num.obs, ncol=1)
for(i in 1:num.obs){
  int[i]=integrate(f,0,n[i])$value
}