我想讓這個陳述更通用
mutate(across(
Kingdom:Genus,
~ ifelse(.x == "Incertae sedis", "*Incertae sedis*", .x)
))
如何以更一般的方式表示“* Incertae sedis *”?基本上我想在 .x 中的字串的開頭和結尾添加一個星號
uj5u.com熱心網友回復:
你可以使用paste0:
mutate(across(
Kingdom:Genus,
~ ifelse(.x == "Incertae sedis", paste0("*", .x, "*"), .x)
))
如果您有多個要突出顯示的術語,您可以先在向量中定義它們,然后使用它來代替:
uncertain <- c("Incertae sedis", "Problematica", "Nomem Dubium")
df %>% mutate(across(
Kingdom:Genus,
~ ifelse(.x %in% uncertain, paste0("*", .x, "*"), .x)
))
uj5u.com熱心網友回復:
*一個選項是使用正則運算式插入
library(dplyr)
library(stringr)
df %>%
mutate(across(Kingdom:Genus, ~str_replace(.x, "(Incertae sedis)", "*\\1*")))
uj5u.com熱心網友回復:
洞穴這是實驗性的:@Allan Cameron 的答案最好paste0
但我想分享這個:str_pad
# fake dataframe
df <- tribble(
~A, ~B, ~C,
"Incertae sedis", "blabla", "Incertae sedis",
"Incertae sedis", "blabla", "bloblo",
"Incertae", "Incertae sedis", "blibli"
)
library(dplyr)
library(stringr)
df %>%
mutate(across(A:C, ~ifelse(. == "Incertae sedis", str_pad(., nchar(.) 2, "both", pad="*"), .)))
A B C
<chr> <chr> <chr>
1 *Incertae sedis* blabla *Incertae sedis*
2 *Incertae sedis* blabla bloblo
3 Incertae *Incertae sedis* blibli
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471121.html
