R sapply() 函数 - 简化输出形式的列表应用
R sapply() 函数与 lapply() 类似,但会尝试将返回的列表简化为向量或矩阵。
当 lapply() 返回的结果可以简化为简单结构时,sapply() 会自动执行。
sapply() 函数语法格式如下:
sapply(X, FUN, ..., simplify = TRUE)
参数说明:
X 输入列表或向量。
FUN 要应用的函数。
simplify 是否尝试简化结果,默认 TRUE。
实例
# sapply vs lapply: 计算均值
scores <- list(
张三 = c(88, 90, 85),
李四 = c(92, 88, 91),
王五 = c(76, 82, 78)
)
# lapply 返回列表
result_list <- lapply(scores, mean)
print("lapply 结果 (列表):")
print(result_list)
# sapply 返回向量
result_vec <- sapply(scores, mean)
print("sapply 结果 (向量):")
print(result_vec)
# sapply 用于数据框各列统计
df <- data.frame(数学 = c(88, 92, 76),
英语 = c(90, 88, 82),
编程 = c(85, 91, 78))
stat <- sapply(df, function(x) c(均值 = mean(x),
标准差 = sd(x)))
print("多统计量:")
print(stat)
scores <- list(
张三 = c(88, 90, 85),
李四 = c(92, 88, 91),
王五 = c(76, 82, 78)
)
# lapply 返回列表
result_list <- lapply(scores, mean)
print("lapply 结果 (列表):")
print(result_list)
# sapply 返回向量
result_vec <- sapply(scores, mean)
print("sapply 结果 (向量):")
print(result_vec)
# sapply 用于数据框各列统计
df <- data.frame(数学 = c(88, 92, 76),
英语 = c(90, 88, 82),
编程 = c(85, 91, 78))
stat <- sapply(df, function(x) c(均值 = mean(x),
标准差 = sd(x)))
print("多统计量:")
print(stat)
执行以上代码输出结果为:
[1] "lapply 结果 (列表):"
$张三
[1] 87.66667
$李四
[1] 90.33333
$王五
[1] 78.66667
[1] "sapply 结果 (向量):"
张三 李四 王五
87.66667 90.33333 78.66667
[1] "多统计量:"
数学 英语 编程
均值 85.333 86.667 84.667
标准差 8.327 4.163 6.506

R 语言实例