我目前有一个函数,可以返回给定年份的平均预期寿命:
get_col_mean <- function(data_frame, column_name){
return(mean(data_frame[[column_name]], na.rm = TRUE))
}
它的使用示例,如果我运行代码:
test2 <- get_col_mean(life_exp, "X2000")
我收到67.486,这是2000年全球的平均预期寿命。
现在,我正在尝试使用以下代码:
col_means <- lapply(life_exp, get_col_mean, paste("X", 1800:2100))
创建一个预期寿命列表意味着每年。然而,当我尝试运行这行代码时,它会给我错误:
Error in data_frame[[column_name]] : attempt to select more than one element in vectorIndex
有人能帮我弄清楚我做错了什么吗?此外,我知道我可以使用不同的方法更容易地解决这个问题(不需要我的函数(,但为了我的任务,我必须使用我的函数来解决这个问题。作业希望我使用apply((、lapply((或sapply(。此外,如果解决这个问题的唯一方法是以某种方式更改我的函数(问题是我的函数,而不是我的lapply((代码(,我可以这样做
我试图附上一张life_expdata.frame的图片,但我找不到任何方法(第一次使用这个网站(。为了解释它,所有的行代表一个国家,所有的列代表一年(X1900是1900年(。"阿富汗"行+"X1900"列将给出一个数字,代表1900年阿富汗人口的预期寿命。
OP代码中的问题是基于循环data.frame而不是列名。
lapply(paste0("X", 1800:2100), function(x) get_col_mean(life_exp, x))