1
我想將下面的函數應用於數據框的變量名稱。然而,爲了這個問題,我將使用矢量(因爲名稱(df)也是一個矢量)。 (1)將矢量元素中的所有字符轉換爲大寫,下一個,(2)用「_」替換所有的中間空格,最後,(3)將特定字符填充到向量中每個元素的結尾。這是我寫的函數:你如何使用if或ifelse在magrittr%>%?
pad <- function(vec,pastechr){
names(vec) <- names(vec) %>%
toupper() %>%
str_replace_all(" ", "_") %>%
if_else(pastechr!="",paste(pastechr,sep="_"),paste0(""))
}
我想在3個向量應用此功能:
vec1 <- c("A","B B","C c")
vec2 <- c("PP p","Q Q","r")
vec3 <- c("x","y z")
這樣,我會貼上「123」到VEC 1,「456」,以VEC 2在元素的末尾。我不想將任何東西粘貼到vec3。因此,
pad(vec1,"123")
pad(vec2,"456")
pad(vec3,"")
我想出來的這個是什麼:
pad(vec1,"123")
[1] "A_123","B_B_123","C_C_123"
pad(vec2,"456")
[1] "PP_P_456","Q_Q_456","R_456"
pad(vec3,"")
[1] "X","Y_Z"
我得到一個錯誤,而不是:
Error:
condition
must be logical
我相信它一定有事情做與if_else
線,所以我試過了:
if(pastechr!="") {paste(pastechr,sep="_")}
和
if_else(pastechr=="",paste0(""),paste(pastechr,sep="_"))
但他們不會工作。有什麼建議?謝謝。
您可以通過'%<>'%更新管操作的左手側。也就是說,'foo <- foo %>%bar'與'foo%<>%bar'相同 – Therkel