2014-10-02 84 views
0

嗨我已经做了一个函数获取来计算从数据集的平均值和标准差,我有七个相同格式的数据集,并希望把输出应用获取函数这些数据集在一个矩阵进行比较。我知道我的功能还需要一步,但无法弄清楚?如果名称为CA1,CA2,...,还需要在那里自动循环遍历每个数据集?我是新至R从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

你能提供样品的数据吗? – nrussell 2014-10-02 18:58:56

回答

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