由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - 求问一个R apply 函数的问题
相关主题
R 扫描matrix能帮忙化简一个矩阵乘法么?
问个R里面avoid for loop的问题(sapply,lapply...)请教R Code, 多谢!
突然对直线拟合的R不明白起来了请教大神们关于bootstrap
请教:关于covariance matrix【R求问】关于vector赋值
求用R做bootstrap的example script如何把model fitting statistics 读出来(R)
a R loop question问个R的问题
R:matrix两个有关于R的小问题?
这个R程序能帮改进一下吗?请教一个概率题的思路
相关话题的讨论汇总
话题: sd话题: max话题: mean话题: summary话题: matrix
进入Statistics版参与讨论
1 (共1页)
s******y
发帖数: 522
1
比方说有一个函数summary,来提取一个vector的summary stats
summary = function(x){
mean = mean(x)
sd = sd(x)
max = max(x)
list(mean=mean, sd=sd, max=max)
}
把函数apply到matrix Z的每一列
apply(Z , 2, summary)
但是返回的格式是list of lists
$result.1
$result.1$mean
[1] -1.522619
$result.1$sd
[1] 1.101962
$result.1$max
[1] 2.10
$result.2
。。。。。。
但我想得到的结果是一个data frame,包含mean, sd, max三个变量
应该怎么改呢
s*********e
发帖数: 1051
2
is it what you need?
summ = function(x){
mean = mean(x)
sd = sd(x)
max = max(x)
list(mean=mean, sd=sd, max=max)
}
Z <- matrix(rnorm(100), nrow = 20, ncol = 5)
library(foreach)
test <- data.frame(foreach(i = 1:ncol(Z), .combine = rbind) %do% summ(Z[, i]
), row.names = NULL)
print(test)
s******y
发帖数: 522
3
谢谢,foreach是可以,想知道有没有更直接的方法
因为这段本身就是嵌套在一个大的foreach 循环里面
不太敢多用foreach,因为以前曾出现过8GB内存被一下子吃掉,不得不终止进程

i]

【在 s*********e 的大作中提到】
: is it what you need?
: summ = function(x){
: mean = mean(x)
: sd = sd(x)
: max = max(x)
: list(mean=mean, sd=sd, max=max)
: }
: Z <- matrix(rnorm(100), nrow = 20, ncol = 5)
: library(foreach)
: test <- data.frame(foreach(i = 1:ncol(Z), .combine = rbind) %do% summ(Z[, i]

s*********e
发帖数: 1051
4
matrix(unlist(your_result), ncol = 3, dimnames = list(1:5, c('mean', 'sd', '
max')))
k*******a
发帖数: 772
5
因为list 本身可以看做是data.frame ,你可以
do.call("rbind", apply(Z , 2, summary))
s******y
发帖数: 522
6
谢谢,这个do.call就是我想要的,很简洁
a***d
发帖数: 336
7
if you replace list in the output line of the summary function by c(mean=
mean, sd=sd, max=max), you will get all output in one matrix. Just need to
transpose it afterwards.

【在 s******y 的大作中提到】
: 比方说有一个函数summary,来提取一个vector的summary stats
: summary = function(x){
: mean = mean(x)
: sd = sd(x)
: max = max(x)
: list(mean=mean, sd=sd, max=max)
: }
: 把函数apply到matrix Z的每一列
: apply(Z , 2, summary)
: 但是返回的格式是list of lists

m****n
发帖数: 3016
8
Second this.

summary = function(x){
mean = mean(x)
sd = sd(x)
max = max(x)
c(mean, sd, max)
}
Z=matrix(rnorm(80*100,mean=0,sd=1), 80, 100)
Z_sum=t(apply(Z , 2, summary

【在 a***d 的大作中提到】
: if you replace list in the output line of the summary function by c(mean=
: mean, sd=sd, max=max), you will get all output in one matrix. Just need to
: transpose it afterwards.

o****o
发帖数: 8077
9
j<-apply(Z, 2, summary)
matrix(data.frame(j), ncol=3, byrow=T)

【在 s******y 的大作中提到】
: 比方说有一个函数summary,来提取一个vector的summary stats
: summary = function(x){
: mean = mean(x)
: sd = sd(x)
: max = max(x)
: list(mean=mean, sd=sd, max=max)
: }
: 把函数apply到matrix Z的每一列
: apply(Z , 2, summary)
: 但是返回的格式是list of lists

I*****a
发帖数: 5425
10
Above are all right.
or you may consider using sapply after you change your input matrix to a dat
a.frame.
sapply(data.frame(matrix), summary)

【在 s******y 的大作中提到】
: 比方说有一个函数summary,来提取一个vector的summary stats
: summary = function(x){
: mean = mean(x)
: sd = sd(x)
: max = max(x)
: list(mean=mean, sd=sd, max=max)
: }
: 把函数apply到matrix Z的每一列
: apply(Z , 2, summary)
: 但是返回的格式是list of lists

1 (共1页)
进入Statistics版参与讨论
相关主题
请教一个概率题的思路求用R做bootstrap的example script
R questiona R loop question
Urgent R QuestionR:matrix
关于R的Simplex的错误信息这个R程序能帮改进一下吗?
R 扫描matrix能帮忙化简一个矩阵乘法么?
问个R里面avoid for loop的问题(sapply,lapply...)请教R Code, 多谢!
突然对直线拟合的R不明白起来了请教大神们关于bootstrap
请教:关于covariance matrix【R求问】关于vector赋值
相关话题的讨论汇总
话题: sd话题: max话题: mean话题: summary话题: matrix