自定义函数在mutate dplyr中无法正常工作

自定义函数在mutate dplyr中无法正常工作,r,dplyr,tidyverse,R,Dplyr,Tidyverse,嗨,我有这样的映射数据 mapDATA: no definition 0 group1 7 group2 12 group3 mainDATA: id no A 0 B 8 C 12 主要数据是这样的 mapDATA: no definition 0 group1 7 group2 12 group3 mainDATA: id no A 0 B 8 C 12 预期数据 id no definition

嗨,我有这样的映射数据

mapDATA:

no    definition
0     group1
7     group2
12    group3

mainDATA:

id no
A  0
B  8
C  12
主要数据是这样的

mapDATA:

no    definition
0     group1
7     group2
12    group3

mainDATA:

id no
A  0
B  8
C  12
预期数据


id  no  definition
A   0   group1
B   8   group2
C   12  group3
我尝试创建函数并在mutate中使用它

getDefinition <- function(no_n, df){
 for(i in 1:nrow(df)) {
  no <- as.double(df[i,1])
  if(no < no_n | no == no_n) {
   def <- as.character(df[i,2])
  } else {
   break
  }
 }
 return(def)

}

mainDATA <- mainDATA %>%
 mutate(definition = getDefinition(no, mapDATA))

warning
the condition has length > 1 and only the first element will be used

getDefinition我们可以使用
cut
/
findInterval

mainDATA$definition <- cut(mainDATA$no, c(mapdata$no,Inf), 
                           labels = mapdata$definition, right = FALSE)

mainDATA
#  id no definition
#1  A  0     group1
#2  B  8     group2
#3  C 12     group3
mainDATA$definition <- mapdata$definition[findInterval(mainDATA$no, mapdata$no)]

我们可以使用
cut
/
findInterval

mainDATA$definition <- cut(mainDATA$no, c(mapdata$no,Inf), 
                           labels = mapdata$definition, right = FALSE)

mainDATA
#  id no definition
#1  A  0     group1
#2  B  8     group2
#3  C 12     group3
mainDATA$definition <- mapdata$definition[findInterval(mainDATA$no, mapdata$no)]