gpt4 book ai didi

应用于数据框中列表的 R 函数

转载 作者:行者123 更新时间:2023-12-02 15:56:11 25 4
gpt4 key购买 nike

这是我的示例数据框:

data <- data.frame(matrix(NA, nrow = 5, ncol = 2))
colnames(data) <- c("Variables", "Value")

Xs <- combn(c("X1", "X2", "X3", "X4", "X5", "X6"), 4, simplify = FALSE)

for(j in 1:5)
{
data$Variables[j] <- Xs[j]
data$Value[j] <- sin(j)
}

看起来像这样:

        Variables      Value
1 X1, X2, X3, X4 0.8414710
2 X1, X2, X3, X5 0.9092974
3 X1, X2, X3, X6 0.1411200
4 X1, X2, X4, X5 -0.7568025
5 X1, X2, X4, X6 -0.9589243

Variables 列的元素是列表:

typeof(data$Variables[1])
[1] "list"

现在,我有了第二个数据框:

vals <- data.frame(matrix(NA, nrow = 6, ncol = 2))
colnames(vals) <- c("Variable", "Val")

for(j in 1:6)
{
vals$Variable[j] <- paste0("X", j, sep = "")
vals$Val[j] <- cos(j)
}

这是输出:

  Variable        Val
1 X1 0.5403023
2 X2 -0.4161468
3 X3 -0.9899925
4 X4 -0.6536436
5 X5 0.2836622
6 X6 0.9601703

我的问题是:我想以这样的方式创建我的 data 数据框的另一列,即对于第一行 data:

        Variables      Value
1 X1, X2, X3, X4 0.8414710

我根据 vals 的值应用sum(或均值、最小值、最大值、加权平均值)函数:

X1、X2、X3、X4 -> 0.5403023 - 0.4161468 - 0.9899925 - 0.6536436 = -1.5194806

它会产生一个新的 data 列:

        Variables      Value      Sum
1 X1, X2, X3, X4 0.8414710 -1.5194806

这可能吗?

最佳答案

是的,你可以这样做:

data$Sum <- sapply(data$Variables, function(x) sum(vals$Val[match(x, vals$Variable)]))

data
#> Variables Value Sum
#> 1 X1, X2, X3, X4 0.8414710 -1.51948065
#> 2 X1, X2, X3, X5 0.9092974 -0.58217484
#> 3 X1, X2, X3, X6 0.1411200 0.09433326
#> 4 X1, X2, X4, X5 -0.7568025 -0.24582597
#> 5 X1, X2, X4, X6 -0.9589243 0.43068214

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

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