gpt4 book ai didi

r - 跨类型列表的列执行计算

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

我有一个包含类型列表列的数据框:

       h1      h2      h3
1 6, 5.25 66, 4.2 4, 4.2
2 5, 11 7, 10 7, 10
3 6, 11 16, 11 16, 11
4 6, 0.25 7, 2.50 7, 7.77
我想将每列中的第一个值与第二个值相乘,所以在 h1这将是 6*5.25 , 5*11 , 6*11 , 等等。
我在 dplyr 中试过这个代码但它给出了一个错误:
library(dplyr)
df0 %>%
mutate(across(c(everything()),
~ as.numeric(.x)[1]*12 + as.numeric(x.)[2]))
Error: Problem with `mutate()` input `..1`.
x 'list' object cannot be coerced to type 'double'
ℹ Input `..1` is `(function (.cols = everything(), .fns = NULL, ..., .names = NULL) ...`.
可重现的数据:
structure(list(h1 = list(c("6", "5.25"), c("5", "11"), c("6", 
"11"), c("6", "0.25")), h2 = list(c("66", "4.2"), c("7", "10"
), c("16", "11"), c("7", "2.50")), h3 = list(c("4", "4.2"), c("7",
"10"), c("16", "11"), c("7", "7.77"))), class = "data.frame", row.names = c(NA,
-4L))

最佳答案

一种解决方案可能是:

df %>%
mutate(across(everything(), ~ map_dbl(., function(y) reduce(as.numeric(y), `*`))))

h1 h2 h3
1 31.5 277.2 16.80
2 55.0 70.0 70.00
3 66.0 176.0 176.00
4 1.5 17.5 54.39
将第一个元素与常量相乘:
df %>%
mutate(across(everything(), ~ map_dbl(., function(y) reduce(as.numeric(y) * c(12, 1), `*`))))

关于r - 跨类型列表的列执行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68680132/

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