试图围绕我的 tibble-creating 代码包装一个函数

Trying to wrap a function around my tibble-creating code

没有函数 wrap 的代码会执行所需的操作,但是 returns 当我将函数 wrap 包围它时为 NULL

遵循任何复制两次的代码都应该变成一个函数的建议,我尝试用我在程序中经常生成的小标题来制作一个函数。

但是当我去把它放在一个函数中时,返回NULL

# This works
for.gas <- tibble(Year = (start-1):(start+h-1))
for(i in countries){
  test.df           <- tibble(Year = (start-1):(start+h-1),
                              n    = NA
  )
  colnames(test.df) <- c("Year", paste(i))
  for.gas           <- left_join(for.gas, test.df)
}

# This doesn't
create.df <- function(df_name){
df_name <- tibble(Year = (start-1):(start+h-1))
for(i in countries){
  test.df           <- tibble(Year = (start-1):(start+h-1),
                              n    = NA
  )
  colnames(test.df) <- c("Year", paste(i))
  df_name           <- left_join(df_name, test.df)
}
}

# Expected results
# A tibble: 31 x 5
    Year Argentina Belgium Brazil Canada
   <int> <lgl>     <lgl>   <lgl>  <lgl> 
 1  2017 NA        NA      NA     NA    
 2  2018 NA        NA      NA     NA    
 3  2019 NA        NA      NA     NA    
 4  2020 NA        NA      NA     NA    
 5  2021 NA        NA      NA     NA    
 6  2022 NA        NA      NA     NA    
 7  2023 NA        NA      NA     NA    
 8  2024 NA        NA      NA     NA    
 9  2025 NA        NA      NA     NA    
10  2026 NA        NA      NA     NA    
# ... with 21 more rows

感谢所有帮助。谢谢。

问题是 'df_name' 的分配发生了,但没有 returned

create.df <- function(df_name){
df_name <- tibble(Year = (start-1):(start+h-1))
for(i in countries){
  test.df           <- tibble(Year = (start-1):(start+h-1),
                              n    = NA
  )
     colnames(test.df) <- c("Year", paste(i))
     df_name           <- left_join(df_name, test.df)
     # assignment happened within the for loop
  }
 df_name  # note this step
 # or explicitly state to return (though not needed)
 # return(df_name) 
}

create.df(for.gas)