gpt4 book ai didi

r - 使用 dplyr 和 tibble 从 lapply() 分配多列

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

我有一个案例,我想优化代码以使其更直接,并分配 lapply 的多个元素结果为 tibble 中的列.

我知道如何在 data.table 中做到这一点,我想要的程序是这样的:

data <- data.table(x=1:9)
data[, c("y","z") := lapply(2:3, function(p){ x^p })]

# x y z
#1: 1 1 1
#2: 2 4 8
#3: 3 9 27
#4: 4 16 64
#5: 5 25 125

现在,我想对 dplyr 做同样的事情.我已经尝试了一些替代方案:
data <- tibble(x=1:9)
data <- data %>%
mutate(c("y","z")=lapply(2:3, function(p){ x^p }))

但它出错了。

最佳答案

我们可以使用 tidyverse选项

library(tidyverse)
map2(2:3, c("y", "z"), ~set_names(data_frame(data$x^.x), .y)) %>%
bind_cols(data, .)
# x y z
#1: 1 1 1
#2: 2 4 8
#3: 3 9 27
#4: 4 16 64
#5: 5 25 125
#6: 6 36 216
#7: 7 49 343
#8: 8 64 512
#9: 9 81 729

或者我们可以删除 data_frame称呼
data %>%
map2(2:3, ~ .^.y) %>%
set_names(., c("y", "z")) %>%
bind_cols(data, .)

关于r - 使用 dplyr 和 tibble 从 lapply() 分配多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45968125/

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