gpt4 book ai didi

r - 在R中以列表形式存储结果以便以后通过名称(而不是索引)进行访问的一种好策略是什么?

转载 作者:行者123 更新时间:2023-12-04 04:13:40 25 4
gpt4 key购买 nike

当我应用某些建模技术时,我想自动化结果创建过程。因此,我将使用不同的参数(例如,层次化聚类距离和链接方法)。结果将具有矩阵形式,这样我就可以通过指定模型参数(例如单个,欧几里得)来访问单个结果。在数据框中,我可以命名列和行,并只需通过df[rname[1],cname[1]]即可访问元素。据我所知,它不可能使用数据框对象来存储列表结果。因此,我需要用于存储列表结果的列表。但是在列表中,我只能指定lst$cname[1],而不能同时指定两个维度。我对么?

# data frame layout for numeric results does not work with list results
rname<-c("u","v","w")
cname<-c("ave","single")

# dataframe for results but does not work for results which are lists
paste.1<-function(x,y) paste(x,y,sep=".")
df1<-data.frame(lapply(cname,paste.1,x=rname),row.names=rname)
colnames(df1)<-cname

# creating list for results - do not get a good idea to proceed from here Advices??
lst<-(lapply(cname,paste.1,x=rname))
names(lst)<-cname

# results example - could be anything else
# with a dataframe I could use df1[rname,cname]<-foo(rname,cname)
# with lists I guess its not as easy
require(graphics)
ave.u <- hclust(dist(USArrests,"euclidean"), cname[1])
ave.v <- hclust(dist(USArrests,"maximum"), cname[1])
ave.w <- hclust(dist(USArrests,"manhattan"), cname[1])
single.u <- hclust(dist(USArrests,"euclidean"), cname[2])
single.v <- hclust(dist(USArrests,"maximum"), cname[2])
single.w <- hclust(dist(USArrests,"manhattan"), cname[2])

好吧,我不确定是否存在我认为必须存在的解决方案。最后,我只想通过行名和列名访问列表结果。我知道我可以将行/列名称转换为数字名称,然后玩分配适当的索引以在长度( rname)x长度( cname)的列表中找到我的结果,但是由于数据框非常好用,我假设它是必须是一种易于存储的简便方法。也可能是因为我刚开始使用R时并没有真正理解列表的概念。所以我的问题是:存储结构化结果(列表)的最佳策略是什么?使用R?

最佳答案

可以有一个列表列表:

nr <- length(rname)
nc <- length(cname)

m <- matrix(list(), nr, nc, dimnames = list(rname, cname))

m[["u", "ave"]] <- ave.u

# etc.

例如,形成其值的所有组合的行名 rnm和列名 cnm以及数据框 g。然后创建一个列表矩阵 m:
rnm <- c("euclidean", "maximum", "manhattan")
cnm <- c("ave", "single")
g <- expand.grid(rnm, cnm)
f <- function(i) hclust(dist(USArrests, g[i,1]), g[i,2])
m <- matrix(lapply(1:nrow(g), f), length(rnm), dimnames = list(rnm, cnm))

我们可以访问如下元素:
> m[["euclidean", "single"]]

Call:
hclust(d = dist(USArrests, g[i, 1]), method = g[i, 2])

Cluster method : single
Distance : euclidean
Number of objects: 50

关于r - 在R中以列表形式存储结果以便以后通过名称(而不是索引)进行访问的一种好策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5235847/

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