【发布时间】:2020-12-14 11:06:51
【问题描述】:
我有一个用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) 转换为列表,因为有人告诉我这是一个问题。
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"
关于为什么以及如何解决它的任何建议?或者,它只有以数字开头的列,我也需要附加前缀,但我看不到明显的解决方案。
【问题讨论】:
标签: r dplyr tidyverse tidyr data-wrangling