r - lapply 并应用于列表 R 的每个组件和元素
问题描述
我有这个清单:
lst
lst <- list(a=c(2.5,9.8,5.0,6.7,6.5,5.2,34.4, 4.2,39.5, 1.3,0.0,0.0,4.1,0.0,0.0,25.5,196.5, 0.0,104.2,0.0,0.0,0.0,0.0,0.0),b=c(147.4,122.9,110.2,142.3))
我想为列表的每个值和列表的每个元素(a
和b
)计算 z.score 为: (x[i]-mean(x)/sd(x)
,其中 x 是列表中每个元素的所有值(togheter)和 x[i] 每个单个组件每个列表元素。我试过了lapply
lapply(lst,function (x) as.data.frame(apply(x,2, function(y)- lapply(lst,mean)/lapply(lst,sd))))
但有一个错误......也许for
循环为:
lst.new <- vector("list",1)
for (i in 1:length(lst)){
for (j in 1:dim(data.frame(lst[i]))[1]){
res[j] <- (as.numeric(unlist(lst[i]))[j]-mean(as.numeric(unlist(lst[i])))/
sd(as.numeric(unlist(lst[i])))
lst.new[[i]] <- res
}
}
但结果很奇怪(肯定我在lst.new
输出中错了):
[[1]]
[1] -0.3635464 -0.1982809 -0.3069486 -0.2684621 -0.2729899 -0.3024208 0.3586413 -0.3250599 0.4741007 -0.3907133
[11] -0.4201442 -0.4201442 -0.3273238 -0.4201442 -0.4201442 0.1571532 4.0284412 -0.4201442 1.9388512 -0.4201442
[21] -0.4201442 -0.4201442 -0.4201442 -0.4201442
[[2]]
[1] 0.9671130 -0.4517055 -1.1871746 0.6717671 -0.2729899 -0.3024208 0.3586413 -0.3250599 0.4741007 -0.3907133
[11] -0.4201442 -0.4201442 -0.3273238 -0.4201442 -0.4201442 0.1571532 4.0284412 -0.4201442 1.9388512 -0.4201442
[21] -0.4201442 -0.4201442 -0.4201442 -0.4201442
预期结果可以是具有不同长度的列表或数据框:
a b
-0.36 0.967113
-0.19 -0.45
[...] [...]
等等...
P.S:
0.36 == (2.5- mean(unlist(lst[1])))/sd(unlist(lst[1]))
0.967113 == (147.4 -mean(unlist(lst[2])))/sd(unlist(lst[2]))
我最好使用lapply
(或他的家庭功能)并解决问题
解决方案
根据输入和预期输出,scale
应该可以工作
lapply(lst, scale)
推荐阅读
- ios - 进入地理围栏时发送请求,此时没有网络连接
- ionic-framework - 使用组件 ion-datetime 信息以两行显示
- xamarin - 如何将存储文件保存到用户在 UWP 中选择的位置?
- php - Symfony - 重置数据库的最佳实践
- r - 如何在我的数据框中创建一个映射到 R 中列表的列?
- python - 从 Facebook Graph API 在 python 中获得喜欢
- c++ - 基于可被另一个数字整除的子数组中的索引
- javascript - 创建可以管理外部数据的抽象组件
- javascript - 如何为输入类型文件设置值
- php - 推送到 cPanel:如何设置?