从data.frame列中的字符串检索数字

从data.frame列中的字符串检索数字,r,dataframe,data-retrieval,reformat,R,Dataframe,Data Retrieval,Reformat,我有一个特定文件格式的4列: =1 =1 =1 =1 4G 4B 4d 2g 4E 8cL 4e . . 8BJ . . 4F# 4A 4d 4dd =2 =2 =2 =2 4G 4G 2d 4.b 4D 4F# . . . . . 8a 4E 4G 4B 4g 我想将其转换为以下data.frame: 1 1 1 1 4 4 4 2 4 8 4 . . 8

我有一个特定文件格式的4列:

=1  =1  =1  =1
4G  4B  4d  2g
4E  8cL 4e  .
.   8BJ .   .
4F# 4A  4d  4dd
=2  =2  =2  =2
4G  4G  2d  4.b
4D  4F# .   .
.   .   .   8a
4E  4G  4B  4g
我想将其转换为以下data.frame:

    1   1   1   1
    4   4   4   2
    4   8   4   .
    .   8   .   .
    4   4   4   4
    2   2   2   2
    4   4   2   4
    4   4   .   .
    .   .   .   8
    4   4   4   4

我想有一个图书馆可以做这类事情。我已经尝试过为它创建一个函数,但没有正常工作。任何贡献都将获得奖励。

我们可以使用
readr
软件包中的
parse_number

library(readr)
library(dplyr)

df %>%
  mutate_all(parse_number)


#   V1 V2 V3 V4
#1   1  1  1  1
#2   4  4  4  2
#3   4  8  4 NA
#4  NA  8 NA NA
#5   4  4  4  4
#6   2  2  2  2
#7   4  4  2  4
#8   4  4 NA NA
#9  NA NA NA  8
#10  4  4  4  4

我们还可以使用
lappy
将函数应用于所有列

df[] <- lapply(df, parse_number)

df[]我们可以使用
readr
包中的
parse_number

library(readr)
library(dplyr)

df %>%
  mutate_all(parse_number)


#   V1 V2 V3 V4
#1   1  1  1  1
#2   4  4  4  2
#3   4  8  4 NA
#4  NA  8 NA NA
#5   4  4  4  4
#6   2  2  2  2
#7   4  4  2  4
#8   4  4 NA NA
#9  NA NA NA  8
#10  4  4  4  4

我们还可以使用
lappy
将函数应用于所有列

df[] <- lapply(df, parse_number)

df[]这看起来像是一个超级简单的解决方案。对于所有未将data.frame转换为字符类而尝试此方法的用户,请尝试:
df[]这看起来像是一个超级简单的解决方案。对于所有未将data.frame转换为字符类而尝试此方法的用户,请尝试:
df[]