据我了解,在使用 r 时,使用诸如 lapply 之类的函数而不是 for 循环(在其他面向对象语言中经常使用)会更优雅。但是,我无法理解语法,并且在尝试使用命令实现简单任务时犯了愚蠢的错误。例如:
我使用 for 循环从 csv 文件加载了一系列数据帧。以下虚拟数据帧充分描述了数据:
x <- c(0,10,11,12,13)
y <- c(1,NA,NA,NA,NA)
z <- c(2,20,21,22,23)
a <- c(0,6,5,4,3)
b <- c(1,7,8,9,10)
c <- c(2,NA,NA,NA,NA)
df1 <- data.frame(x,y,z)
df2 <- data.frame(a,b,c)
我首先生成一个数据框名称列表(data_names-我在加载 csv 文件时执行此操作),然后只想对列求和。我的尝试当然不起作用:
lapply(data_names, function(df) {
counts <- colSums(!is.na(data_names))
})
我当然可以使用列表(我意识到从长远来看这可能会更好)但是从教学的角度来看,我想更好地理解 lapply。
非常感谢您的任何指点