如何在R中将含空格的数字字符串转换为可用数字格式?
在R中处理带空格和换行的数字字符串
不需要给每个两位数加引号,用以下几种更直接的方法就能将字符串转换为可用的数值格式:
方法1:用strsplit拆分后转数值
先拆分所有空白字符(包括空格和换行),再转换为数值向量:
gridinput <- "08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00" # 拆分所有空白字符 num_chars <- strsplit(gridinput, "\\s+")[[1]] # 转换为数值向量 num_vector <- as.numeric(num_chars) # 查看结果 num_vector
方法2:直接用scan读取字符串中的数字
scan可以直接解析文本中的数字,自动忽略空格和换行:
num_vector <- scan(text = gridinput) num_vector
方法3:转换为矩阵(适合表格型数据)
如果你的原始数据是多行多列的表格(比如示例中是2行20列),可以用read.table直接转为数据框,再转矩阵:
grid_df <- read.table(text = gridinput) grid_matrix <- as.matrix(grid_df) # 查看矩阵结果 grid_matrix
补充:如果一定要给两位数加引号(不推荐)
如果坚持按你最初的思路给每个两位数加引号,也可以用正则表达式替换,再拆分转换:
# 给每个两位数添加单引号 grid_quoted <- gsub("(\\d{2})", "'\\1'", gridinput) # 拆分后转数值 num_vector <- as.numeric(strsplit(grid_quoted, "\\s+")[[1]])
但这种方法属于绕路,前面三种方法更高效简洁。
内容的提问来源于stack exchange,提问作者OpenSauce
相关产品推荐
相关产品推荐

