[英]Rename_if column in R with prefix if name %in% list: lists do not match
我有一個使用map
函數創建的小標題列表。 列名如下...
dfA[[1]]%>% colnames(.)
[1] "date_strt" "grouped_id" "10938_0" "12881_0"
編號的列名稱為我正在使用的函數(鼠標)創建問題,我需要將它們更改為在開頭添加一個字符串。 由於我需要為大量小標題執行此操作,因此我無法直接引用名稱。 所以我從另一個 tibbles names
創建了字符向量列表
df_list <- dfB %>% names() %>% as.vector()
一些名稱以字符串“ITEM”為前綴,因此我將其刪除以用於匹配列表。
df_list <- purrr::map(df_list ,function(x){x %>% str_remove(.,"ITEM")})
當我嘗試根據字符串進行追加時,我們會得到一些不需要的特殊字符
purrr::map2(dfA, df_list, function(df, name_list)
df %>% rename_if(colnames(.) %in% name_list, ~paste0("ITEM", .)))
[[1]] date_strt grouped_id `ITEM\`12881_0\`` `ITEM\`79916_0\``
然后我使用list
將名稱列表 (df_list) 轉換為 list,因為有人告訴我這是一個問題。
df_list<- list(df_list)
這在昨晚有效,但是由於某種原因,在今天重新啟動我的會話(並更新我的包)后,它不再有效。
當我對行名進行條件檢查時
dfA[[1]][-1]%>% colnames(.) == df_list[[1]]
我在申請list
之前得到了這個
[1] FALSE TRUE TRUE
但這之后
[1] FALSE FALSE FALSE
我不知道為什么,但是 df_list[[1]] 現在返回兩個列表時間,而不僅僅是列表 [1]
申請前list
[1] "day" "10938_0" "12881_0"
申請后list
[[1]]
[1] "day" "10938_0" "12881_0"
[[2]]
[1] "day" "12881_0" "79916_0"
關於為什么以及如何解決它的任何建議? 或者,它唯一以數字開頭的列也需要附加前綴,但我看不到明顯的解決方案。
這里str_remove
應用於整個數據集,根據?str_remove
輸入string
將是
字符串 - 輸入向量。 要么是一個字符向量,要么是某種強制的東西
data.frame/tibble
不能data.frame/tibble
為vector
這可以用一個簡單的例子重現
head(iris) %>%
str_remove("\\..*")
#[1] "c(5" "c(3" "c(1" "c(0" "c(1, 1, 1, 1, 1, 1)"
相反,它應該應用於每一列
library(dplyr)
library(purrr)
library(stringr)
purrr::map(df_list, ~ .x %>%
rename_all(~ str_remove(.,"ITEM")))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.