从R按对象获取单个列表
如果您有以下数据:从R按对象获取单个列表,r,R,如果您有以下数据: x<-1:100 c1<-cut(x,breaks=10 ) result<-by(x,c1,function(x){ list(n=length(x), centralTendency=c(mean=mean(x), median=median(x)) ) } ) x类似这样的东西可能: n <- unn
x<-1:100
c1<-cut(x,breaks=10 )
result<-by(x,c1,function(x){
list(n=length(x),
centralTendency=c(mean=mean(x),
median=median(x)) ) } )
x类似这样的东西可能:
n <- unname(sapply(result, function(x) x$n))
#or as per @Frank 's comment
sapply(result,`[[`,"n")
#n
#[1] 10 10 10 10 10 10 10 10 10 10
nct
#$`(0.901,10.9]`
#平均中位数
# 5.5 5.5
#
#$`(10.9,20.8]`
#平均中位数
# 15.5 15.5
#
#$`(20.8,30.7]`
#平均中位数
# 25.5 25.5
期望的输出是什么?1)对于这种情况,向量n=c(10,10,10,10,10,10,10…)2)列表(‘(0.901,10.9)’=c(5.5,5.5),‘(10.9,20.8)’=c(15.5,15.5)…(90.1100)=c(95.5,95.5)我已经进行了计算。我只想得到数值,而不是重新计算平均值/平均值。谢谢@Frank和lyzanderI。我希望我能再给你一个+1。当你使用[[函数,您必须使用backticks。这是一个很小但非常重要的区别。事实上,@Frank应该获得第二个+1,因为他提到了[[
函数:)。但是感谢您的好话,这使我在这里花费的努力和时间是值得的。谢谢:)
ct <- lapply(result, function(x) x$centralTendancy)
#or as per @Frank 's comment
lapply(result,`[[`,"centralTendency")
#> ct
#$`(0.901,10.9]`
# mean median
# 5.5 5.5
#
#$`(10.9,20.8]`
# mean median
# 15.5 15.5
#
#$`(20.8,30.7]`
# mean median
# 25.5 25.5