[英]How to vectorize this code r code using dplyr
我想知道如何通過向量化來縮短這段代碼(活動是長度為3的字符向量):
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))
,但這些不起作用。謝謝。
我們可以在recode
中使用命名向量來更改值
library(dplyr)
data %>%
mutate(label = recode(label, !!! setNames(activities[1:3], 1:3))) %>%
rename_at(vars(matches('^([tf]|Acc)')),
~ c("Time", "Frequency", "Accelerometer"))
關於rename_with
, gsub
沒有針對patterns
進行矢量化。 相反,我們可以使用str_replace
library(stringr)
... %>%
rename_with(~ str_replace_all(.x, setNames( c("Time","Frequency","Accelerometer"), c("^t", "^f", "Acc"))))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.