gpt4 book ai didi

r - 组合 dplyr 中的 "mutate"和 "across"以及 stringr 中的函数

转载 作者:行者123 更新时间:2023-12-02 19:13:25 24 4
gpt4 key购买 nike

问题陈述

我有一个表,其中某些列以我想要删除的字符串开头。我尝试通过使用 dplyr 中的新“across”功能和 stringr 中的函数来操作字符串来做到这一点,但我失败了(这就是我在这里的原因!)。

示例代码

library(tidyverse)

# Generate a short mock-up table
set.seed(1)
mockup <- tibble(n_col1 = sample(1:10, 5, FALSE),
v_col2 = sample(letters, 5, FALSE),
col3 = sample(10:20, 5, TRUE),
col4 = sample(LETTERS, 5, FALSE)) # More columns beginning with "n_", "v_" or nothing

# Remove the "n_" or "v_" strings from the column names
# This is as far as my skills go...
mockup <- mockup %>% mutate(across(starts_with(c("n_", "v_")), str_remove))

问题

有什么想法可以以我的方式或以不同的方式,以简短而有效的方式做到这一点吗?

最佳答案

across 用于操作列中的值,而不是列名称。您可以使用新的 rename_with 来重命名列。

library(dplyr)
mockup %>% rename_with(~sub('^(n|v)_', '', .))
#rename_all in old dplyr
#mockup %>% rename_all(~sub('^(n|v)_', '', .))

# col1 col2 col3 col4
# <int> <chr> <int> <chr>
#1 9 w 10 N
#2 4 k 14 J
#3 7 n 14 G
#4 1 r 19 I
#5 2 s 15 O

或者在基础 R 中执行此操作:

names(mockup) <- sub('^(n|v)_', '', names(mockup))

关于r - 组合 dplyr 中的 "mutate"和 "across"以及 stringr 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63964972/

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