您好我已经创建了一个函数Get从数据集计算平均值和SD,我有七个相同格式的数据集,并希望将输出应用Get函数放在一个矩阵中的这些数据集进行比较。我知道我需要在我的功能中再多做一步但是无法弄明白吗?如果名称是CA1,CA2,......那么还要在那里自动循环遍历每个数据集?我是R的新手
这是功能
Get <- function (x) {
x <- as.matrix(x)
m <- mean(x[,3:4])
SD <- sd(x[,3:4])
return(list(mean=m, SD=SD))
}
答案 0 :(得分:1)
尝试:
set.seed(42) #creating some datasets
CA1 <- as.data.frame(matrix(sample(1:20, 5*20, replace=TRUE), ncol=5))
CA2 <- as.data.frame(matrix(sample(1:20, 5*20, replace=TRUE), ncol=5))
CA3 <- as.data.frame(matrix(sample(1:20, 5*20, replace=TRUE), ncol=5))
nm1 <- ls(pattern="^CA\\d")
res <- sapply(mget(nm1), Get)
res #here you get a list of `6`
# CA1 CA2 CA3
#mean 10.1 9.9 9.275
#SD 6.058687 5.490318 5.579208
转换为matrix
m1 <- matrix(unlist(res), ncol=3, dimnames=dimnames(res))
m1
# CA1 CA2 CA3
#mean 10.100000 9.900000 9.275000
#SD 6.058687 5.490318 5.579208