gpt4 book ai didi

list - R中数据框中的列表列

转载 作者:行者123 更新时间:2023-12-01 06:19:29 25 4
gpt4 key购买 nike

让我们在 R 中有以下数据框:

df <- data.frame(sample=rnorm(1,0,1),params=I(list(list(mean=0,sd=1,dist="Normal"))))
df <- rbind(df,data.frame(sample=rgamma(1,5,5),params=I(list(list(shape=5,rate=5,dist="Gamma")))))
df <- rbind(df,data.frame(sample=rbinom(1,7,0.7),params=I(list(list(size=7,prob=0.7,dist="Binomial")))))
df <- rbind(df,data.frame(sample=rnorm(1,2,3),params=I(list(list(mean=2,sd=3,dist="Normal")))))
df <- rbind(df,data.frame(sample=rt(1,3),params=I(list(list(df=3,dist="Student-T")))))

第一列包含概率分布的随机数,第二列存储带有参数和名称的列表。数据框 df 看起来像:

      sample       params
1 0.85102972 0, 1, Normal
2 0.67313218 5, 5, Gamma
3 3.00000000 7, 0.7, ....
4 0.08488487 2, 3, Normal
5 0.95025523 3, Student-T

Q1:如何获得所有记录的名称分布列表? df$params$dist 不起作用。对于单个记录很容易,例如第三个:df$params[[3]]$dist

Q2:像这样存储数据有没有其他方法?像多维数据框之类的东西?我不想为每个参数添加列,因为它会分散带有缺失值的数据框。

最佳答案

将这样的信息存储在纯 list 结构中可能比在数据框中更自然:

distList <- list(normal = list(sample=rnorm(1,0,1),params=list(mean=0,sd=1,dist="Normal")),
gamma = list(sample=rgamma(1,5,5),params=list(shape=5,rate=5,dist="Gamma")),
binom = list(sample=rbinom(1,7,0.7),params=list(size=7,prob=0.7,dist="Binomial")),
normal2 = list(sample=rnorm(1,2,3),params=list(mean=2,sd=3,dist="Normal")),
tdist = list(sample=rt(1,3),params=list(df=3,dist="Student-T")))

然后,如果您只想从每个中提取分发名称,我们可以使用 sapply 遍历列表并只提取那部分:

sapply(distList,function(x) x[[2]]$dist)
normal gamma binom normal2 tdist
"Normal" "Gamma" "Binomial" "Normal" "Student-T"

关于list - R中数据框中的列表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8328022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com