首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用dplyr向量化这个code r代码

如何使用dplyr向量化这个code r代码
EN

Stack Overflow用户
提问于 2020-07-19 01:44:42
回答 1查看 117关注 0票数 2

我想知道如何通过向量化来缩短这段代码(活动是一个长度为3的字符向量):

代码语言:javascript
运行
复制
data %>% mutate(label=recode(label, `1`=activities[1],
                                    `2`=activities[2],
                                    `3`=activities[3])) %>%
    rename_with( ~ gsub("^t", "Time", .x)) %>%
    rename_with( ~ gsub("^f", "Frequency", .x)) %>%
    rename_with( ~ gsub("Acc", "Accelerometer", .x))

我想要像mutate(label=recode(label, 1:3 = activities)这样的东西

rename_with( ~ gsub(c("^t", ^f", "Acc"), c("Time","Frequency","Accelerometer"), .x)),但这些都不起作用。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-19 03:12:04

我们可以使用recode中的命名向量来更改这些值

代码语言:javascript
运行
复制
library(dplyr)
data %>%
       mutate(label = recode(label, !!! setNames(activities[1:3], 1:3))) %>%
       rename_at(vars(matches('^([tf]|Acc)')), 
             ~ c("Time", "Frequency", "Accelerometer"))

关于rename_withgsub没有针对patterns进行矢量化。相反,我们可以使用str_replace

代码语言:javascript
运行
复制
library(stringr)

   ... %>%
        rename_with(~  str_replace_all(.x, setNames( c("Time","Frequency","Accelerometer"), c("^t", "^f", "Acc"))))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62971819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档