我有一个data.frame> 100列,在导入它们之后都被格式化为数字.我想将特定列从数字转换为因子.我不想手动转换每一列,而是使用正则表达式为列名选择相关列并对其进行转换.在regexr.com的帮助下,我创建了以下表达式:\b\w{2,4}[1-9]\b.它应该选择列名称为2到4个字母的单词的所有列,以1到9的数字结尾.
这是一个例子:
df<-data.frame(pre1=c(1:10),
em2=c(1:10),
foo=c(1:10))
df
pre1 em2 foo
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
7 7 7 7
8 8 8 8
9 9 9 9
10 10 10 10
df %>%
select(matches("/\b\w{2,4]}[1-9]\b/"))
Error: '\w' is an unrecognized escape in character string starting ""/\b\w"
Run Code Online (Sandbox Code Playgroud)
这应该选择前两列,而不是第三列.似乎\w没有得到承认matches.还有其他办法吗?
你可以很好地完成这一切dplyr::mutate_at(),定义你想要改变的变量vars().
library(dplyr)
df <- data_frame(pre1=c(1:10),
em2=c(1:10),
foo=c(1:10))
df %>%
mutate_at(vars(matches("\\b\\w{2,4}[1-9]\\b")), as.factor)
#> # A tibble: 10 x 3
#> pre1 em2 foo
#> <fctr> <fctr> <int>
#> 1 1 1 1
#> 2 2 2 2
#> 3 3 3 3
#> 4 4 4 4
#> 5 5 5 5
#> 6 6 6 6
#> 7 7 7 7
#> 8 8 8 8
#> 9 9 9 9
#> 10 10 10 10
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1870 次 |
| 最近记录: |