Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 创建函数时意外覆盖输出_R_Function_Dataframe - Fatal编程技术网

R 创建函数时意外覆盖输出

R 创建函数时意外覆盖输出,r,function,dataframe,R,Function,Dataframe,我是R新手,所以这可能很简单,但我写的函数有一个问题-我需要它返回更新的数据帧,但它返回的是原始数据帧 我在R中创建了一个函数,其中输入是1)空数据帧,信号(有两列,时间和导入,2)实施天数向量治疗(例如,30、60、90表示在这些天进行治疗)和3)模型拟合,这就产生了一条曲线,显示了治疗是如何随着时间的推移而逐渐消失的。输出是新的数据帧,它使用治疗天数向量将数据从model_fit引入信号$import列和相应的时间 我为我的函数测试了我的每一行代码,它们都正常工作——我的问题是我不知道如何正

我是R新手,所以这可能很简单,但我写的函数有一个问题-我需要它返回更新的数据帧,但它返回的是原始数据帧

我在R中创建了一个函数,其中输入是1)空数据帧,
信号
(有两列,
时间
导入
,2)实施天数向量治疗(例如,30、60、90表示在这些天进行治疗)和3)
模型拟合
,这就产生了一条曲线,显示了治疗是如何随着时间的推移而逐渐消失的。输出是新的数据帧,它使用治疗天数向量将数据从
model_fit
引入信号$import列和相应的时间

我为我的函数测试了我的每一行代码,它们都正常工作——我的问题是我不知道如何正确地返回更新后的数据帧。这是我的密码:

#Initial vectors for days post treatment, % killed
x <- c(4, 30, 60, 90, 120, 210, 360) #days post treatment
z <- c(1.0, 0.99, 0.99, 0.79, 0.7, 0.02, 0) #% killed

#create model fit:
fit2 <- nls(z ~ SSlogis(x, Asym, xmid, scal), data = data.frame(x, z))
summary(fit2)

lines(seq(0, 400, length.out = 400),
      predict(fit2, newdata = data.frame(x = seq(0.5, 400, length.out = 400))))

# Create function:
trt.function <- function(model_fit, vector_of_trt_days, signal) {
  #inputs
  times <- seq(0, 20000, by = 1)
  signal <- data.frame(times = times, import = rep(0, length(times)))
  Asym<-summary(fit2)$parameters[1,1]
  xmid<-summary(fit2)$parameters[2,1]
  scal<-summary(fit2)$parameters[3,1]
  trt.start = vector_of_trt_days
  trt.end = c(trt.start + 400)
  trt.segments <- unlist(Map(':', trt.start, trt.end))
  time.segments <- rep(0:401, times=length(trt.start))
  signal$import[trt.segments] = (Asym / (1 + exp((xmid - times[time.segments] / scal))))
  return(signal)
}

传递给函数的
信号
向量天数
是什么?在最后一行代码中,您正在索引
时间
,其中索引从0开始。在
R
中,索引从1开始如果我在函数中使用
out,我得到
out,我是说在函数内部,第三行是创建
信号
信号啊,我明白了。谢谢,主要问题是我完全忘了做你用
out显示的内容
#Create empty dataframe
times <- seq(0, 20000, by = 1)
signal <- data.frame(times = times, import = rep(0, length(times)))

# inputs
Asym<-summary(fit2)$parameters[1,1]
xmid<-summary(fit2)$parameters[2,1]
scal<-summary(fit2)$parameters[3,1]

trt.start <- c(10000,10090,10180,10270)  #input for start times of treatments 
trt.end <- c(trt.start + 400) #input for the end times of treatments
trt.segments <- unlist(Map(':', trt.start, trt.end)) #Create the treatment segments
time.segments <- rep(0:401, times=length(trt.start)) #create the corresponding time segments 

signal$import[trt.segments] = (Asym / (1 + exp((xmid - times[time.segments]) / scal)))