如何解决将名称分配给R中列表的向量元素
我想知道是否可以在下面的函数foo
的输出中为每个矢量元素分配名称?
对于以下示例,给$pubs
名称的元素:"pubs_-1SD"
,"pubs_+1SD"
,给$time
名称的元素,"time_-1SD"
,{{1 }}?
"time_+1SD"
解决方法
您可以在sapply
中传递列名称,并使用setNames
分配名称:
foo <- function(data,vars) sapply(vars,function(x)
setNames(mean(data[[x]]) + c(-1,1)*sd(data[[x]]),paste0(x,'_',c('-','+'),'1SD')),simplify = FALSE)
foo(data,c("pubs","time"))
#$pubs
#pubs_-1SD pubs_+1SD
# 5.348203 33.909862
#$time
#time_-1SD time_+1SD
# 3.312931 12.848359
,
我们可以使用Map
foo <- function(data,vars) {
Map(function(x,y) setNames(mean(x) + c(-1,1)*sd(x),sprintf('%s_%s1SD',rep(y,2),'+'))),data[,vars],vars)
}
foo(data,"time"))
#$pubs
#pubs_-1SD pubs_+1SD
# 5.348203 33.909862
#$time
#time_-1SD time_+1SD
# 3.312931 12.848359
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。