gpt4 book ai didi

r - 使用带有嵌套列表的查找表

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

您好,我有一堆关于流量 (Q) 的水文数据,我想对其进行标准化。数据存储在一个大型嵌套表中,其布局类似于我需要保留的如下布局:

Flowtestlist <- list(list("910" = data.frame( Q=c(650, 720, 550, 580, 800)),
"950" = data.frame( Q=c(550, 770, 520, 540, 790))),
list ("910" = data.frame( Q=c(450, 620, 750, 580, 800)),
"950" = data.frame( Q=c(650, 750, 580, 520, 890))))

我有级别 [[1]] 和 [[2]],实际上,我有 9 个级别,这些也是型号。在每个模型中,我有 18 个子流域,编号为 910、950、1012、1087 等(在上面的示例中,为简单起见,只有两个子流域 910、950)。子流域包含有关流量 (Q) 的数据。

还有一个查找表:

test_model <- c(1,1,2,2)
test_subbasin <- c(910,950,910,950)
Q_mean <- c(870,765,823,689)
FlowtestDF <- data.frame(test_model, test_subbasin, Q_mean)

此数据框包括每个模型和子流域的引用期间的流量均值 (Q_mean)。我想从嵌套表中取出每个Q,并在查找表中找到匹配的型号和子流域,并对其进行划分以获得标准化的流Q_st。

fun_st <- function(x, y=FlowtestDF) {
x$Q_st <- x$Q/y$Q_mean
x <- x
}

testresult <- lapply(Flowtestlist, lapply, fun_st)

它不起作用。据我了解,该功能无法在查找表(模型和子流域)中找到所需数字的适当位置。如何在保持数据的嵌套表结构的同时完成这项工作?

最佳答案

你在找这个吗?

Map(\(x, y) lapply(y[match(x$test_subbasin, names(y))], \(i) i / x$Q_mean),
split(FlowtestDF, FlowtestDF$test_model),
Flowtestlist)
# $`1`
# $`1`$`910`
# Q
# 1 0.7471264
# 2 0.9411765
# 3 0.6321839
# 4 0.7581699
# 5 0.9195402
#
# $`1`$`950`
# Q
# 1 0.6321839
# 2 1.0065359
# 3 0.5977011
# 4 0.7058824
# 5 0.9080460
#
#
# $`2`
# $`2`$`910`
# Q
# 1 0.5467801
# 2 0.8998549
# 3 0.9113001
# 4 0.8417997
# 5 0.9720535
#
# $`2`$`950`
# Q
# 1 0.7897934
# 2 1.0885341
# 3 0.7047388
# 4 0.7547170
# 5 1.0814095

注意:如果您(仍然)使用 R<4.1,而不是例如\(x, y) 使用 function(x, y).

关于r - 使用带有嵌套列表的查找表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69215211/

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