尝试运行 lapply() 时"Error in [...] : attempt to select more than one element in vectorIndex"问题。任何人都可以和我



我目前有一个函数,可以返回给定年份的平均预期寿命:

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))

最新更新