计算数据帧中分组(Tag)的峰值函数,并将其进一步RBIND到新数据帧中

计算数据帧中分组(Tag)的峰值函数,并将其进一步RBIND到新数据帧中,r,R,我不擅长在堆栈上提问,所以如果我弄错了,请原谅。下面是一个场景(我尝试用一个简单的例子来重现): library(“pracma”) 使用tidyverse库标记,我们可以执行以下操作: result <- dfr %>% split(.$Tag) %>% map(~findpeaks(.$Temp, nups = 1, ndowns = 0, zero = "+", peakpat = NULL, minpeakheight = 33,

我不擅长在堆栈上提问,所以如果我弄错了,请原谅。下面是一个场景(我尝试用一个简单的例子来重现):

library(“pracma”)

使用
tidyverse
库标记,我们可以执行以下操作:

result <- dfr %>% 
    split(.$Tag) %>% 
    map(~findpeaks(.$Temp, nups = 1, ndowns = 0, zero = "+", peakpat = NULL, minpeakheight = 33, minpeakdistance = 4, threshold = 0.42, npeaks = 11, sortstr = FALSE)) %>% 
    map_df(~data_frame(Temp = parse_number(.x[,1]), 
                    Peak_Mid = parse_number(.x[,2]),
                    Peak_start = parse_number(.x[,3]),
                    Peak_End= parse_number(.x[,4])),
           .id = 'Tag') %>% 
    arrange(Tag, Peak_Mid) %>% 
    group_by(Tag) %>% 
    mutate(Trend= (lead(Temp)-Temp)/(lead(Peak_Mid)-Peak_Mid))

它在函数列表[[i]](值)中给出了一个错误:找不到添加了库加载的函数“map”,也删除了一个多余的括号,请立即检查它。安装包:包“purr”不可用(适用于R版本3.3.2)…这是任何其他选项的问题它的
purr
与3
R
,但是您应该安装并加载
tidyverse
(它是一个软件包集合)它工作了吗?如果它确实帮助了你,请考虑接受和投票。
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) 
}
result <- dfr %>% 
    split(.$Tag) %>% 
    map(~findpeaks(.$Temp, nups = 1, ndowns = 0, zero = "+", peakpat = NULL, minpeakheight = 33, minpeakdistance = 4, threshold = 0.42, npeaks = 11, sortstr = FALSE)) %>% 
    map_df(~data_frame(Temp = parse_number(.x[,1]), 
                    Peak_Mid = parse_number(.x[,2]),
                    Peak_start = parse_number(.x[,3]),
                    Peak_End= parse_number(.x[,4])),
           .id = 'Tag') %>% 
    arrange(Tag, Peak_Mid) %>% 
    group_by(Tag) %>% 
    mutate(Trend= (lead(Temp)-Temp)/(lead(Peak_Mid)-Peak_Mid))
map_df(~tibble(
    Temp = .x[,1],
    Peak_mid = .x[,2],
    Peak_start = .x[,3],
    Peak_End = .x[,4]),
  .id = "Tag")