gpt4 book ai didi

r - 如何在 R 中的 reshape 包中循环 dcast 函数

转载 作者:行者123 更新时间:2023-12-04 12:00:35 24 4
gpt4 key购买 nike

作为一个相对较新的 R 用户,我在使用任何循环函数时都遇到了麻烦。我看过很多教程,但其中的示例通常非常基础,因此易于执行。但是,我需要创建稍微复杂一些的循环,并且在弄清楚如何这样做时遇到了很多麻烦。在这里和其他论坛上有一些相关的循环问题,但没有一个完全符合我的需要,尽管我已经尝试为我当前的问题调整其他答案,但我一直遇到错误。

我有 2000 个 .csv 文件,其中的数据以长格式数据制成表格(简化示例):

solution1    
> sol1 sol2 Istat
> s1 s2 0.435
> s1 s3 0.456
> s1 s4 0.845
> s1 s5 0.234

它基本上是我拥有的 2000 个单独解决方案的成对比较的总结,解决方案之间的相似性总结在一个“Istat”值中。

我正在尝试将这 2000 个 .csv 文件中的每一个 dcast 到宽格式表中(使用 R 中的 reshape 包),所以它们看起来像(以下示例如下):
     s1     s2     s3     s4     s5
s1 NA 0.435 0.456 0.845 0.234

我只知道如何使用单个 .csv 文件执行此操作:
stat.cast <- dcast(solution1, sol2 ~ sol1, value.var="Istat")

但我似乎无法将其用于 for 循环函数,甚至无法使用 lapply ,这似乎也是一个可能的解决方案。

我能用 for 函数得到的最接近的函数:
 # Get files from directory
loopout = "/Users/jc219806/Documents/Chapter 1/ANALYSES/R work/Istat/last_LoopOut/"
# List of file names inside folder
solutions <- list.files(loopout)
# Read all 2000 files inside
all.data <- lapply(solutions, read.csv, header=TRUE)
# Loop for performing reshape cast function to each listed dataframe
for (i in 1:length(all.data))
{
all.cast <- dcast(all.data, sol2 ~ sol1, value.var="Istat")
}

但它一直给我一个错误,即它无法从输入中识别“Istat”值 - 即使它在我拥有的数据框列表中(上面代码中的“解决方案”对象)。

并使用 lapply 函数:
lapply(solutions, dcast(all.data, sol2 ~ sol1, value.var="Istat"))

我得到相同类型的错误:
Error: value.var (Istat) not found in input

我不明白为什么,因为它列在数据帧列表中,作为 2000 个数据帧中的每一个中的变量之一。似乎我没有让它正确地循环遍历我的 2000 个 .csv 文件,但我不知道如何解决这个问题。我还想知道是否也可以编写代码,以便根据列名将所有 2000 个输出绑定(bind)在一起循环?它在疯狂循环。

我希望这不是一个像我认为的那样复杂的问题。任何帮助(以及一些详细的解释)或有用的方向都将受到极大和真诚的感谢。谢谢

最佳答案

你写了:

for (i in 1:length(all.data))
{
all.cast <- dcast(all.data, sol2 ~ sol1, value.var="Istat")
}

你应该写的:
all.cast <- list()
for (i in 1:length(all.data)) {
all.cast[[i]] <- dcast(all.data[[i]], sol2 ~ sol1, value.var = "Istat")
}

但更“R-esque”的解决方案是:
all.cast <- lapply(all.data, dcast, sol2 ~ sol1, value.var = "Istat")

希望这能说明你做错了什么。

关于r - 如何在 R 中的 reshape 包中循环 dcast 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29959450/

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