【发布时间】:2021-03-26 05:53:59
【问题描述】:
我是在 Stack 上提问的新手,所以如果我弄错了,请原谅我。这是场景(我试图用一个简单的例子重现它):
library("pracma")
Tag<- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5,5, 5,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6)
Temp<- c(43, 44, 45, 41, 43, 38, 40, 41, 39, 37, 37, 39, 45, 42, 41, 43, 44, 39,38,
37, 43, 44, 45, 41, 43, 38, 40, 41, 39, 37, 37, 39, 45, 42, 41, 43, 44,
39, 38, 37, 43, 44, 45, 41, 43, 38, 40, 41, 39, 37, 37, 39, 45, 42, 41,43,
44, 39, 38, 37)
dfr=data.frame(Tag=Tag,Temp=Temp)
数据描述 - 我们有两列:
标签 [分组变量]
Temp(峰值的数值变量功能必须执行)
for (i in 1:6) {
df=filter(dfr , dfr$Tag == i)
pik =findpeaks(df$Temp, nups = 1, ndowns = 0, zero = "+", peakpat = NULL,
minpeakheight = 33, minpeakdistance = 4,
threshold =0.42, npeaks = 11, sortstr = FALSE)#Peak Function
pik<- as.data.frame(pik)#Converting into data frame as it is in matrix form
names(pik) <- c("Temp","Peak_Mid","Peak_start","Peak_End")# renaming the header
pik <- arrange(pik , Peak_Mid)#Rearranging with Peak_Mid
attach(pik)#attaching pik df
j=1#initializing for loop
s=0#initializing for loop
for (j in 1:nrow(pik))#for loop for calculating slope individual points
s[[j]]=((Temp[j+1]-Temp[j])/(Peak_Mid[j+1]-Peak_Mid[j]))
pik$Trend <- 0#creating new column(Trend) filled with zero
pik$Trend <- s# inserting the calculated s variable onto pik df
w[[i]]=as.data.frame(pik)
}
我试图将上面的代码变成一个for 循环,这样在每个ith 值i:e(Tag[i] 在我们的例子中i 根据我们的数据范围从1到6) .所以每次Tag[i]都会通过peak函数计算,然后我们会计算点之间的斜率,我们会得到一个新的4列数据框。
此计算将在每个 Tag[i] 上执行,这是主数据帧的子集。所以,我们会得到i不同的数据帧,这些数据帧会被rbind加上tag no。
这是输入与预期输出的视觉效果:
【问题讨论】:
标签: r