试图围绕我的 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' 的分配发生了,但没有 return
ed
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)
没有函数 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' 的分配发生了,但没有 return
ed
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)