如何将文本文件中的坐标输出拆分为R语言中的两个向量?
拆分坐标字符串为x、y向量的R实现
没问题,我来帮你把那串坐标数据拆分成独立的x和y向量!结合你已经用scan()读取文本的操作,这里有两种简单可靠的方法:
方法一:转成矩阵提取列
先把读取到的字符串转换成R能识别的列表对象,再合并成矩阵提取列,步骤清晰直观:
# 假设你已经用scan读取到了内容,这里模拟一下输入 read_txt_file <- "[(9.010658025741577, 2.8047988414764404), (9.242822885513306, 2.66866397857666), (9.263759851455688, 2.6707050800323486), (9.515105962753296, 2.5500648021698)]" # 将字符串转为R列表对象 coords_list <- eval(parse(text = read_txt_file)) # 把列表中的每个坐标对合并成矩阵 coords_matrix <- do.call(rbind, coords_list) # 提取x和y向量 x <- coords_matrix[, 1] y <- coords_matrix[, 2]
运行后你就能得到想要的x和y向量,直接打印看看:
> x [1] 9.010658 9.242823 9.263760 9.515106 > y [1] 2.804799 2.668664 2.670705 2.550065
方法二:直接遍历列表提取元素
如果不想用矩阵,也可以用sapply()直接遍历列表,提取每个坐标对的第一个和第二个元素:
# 同样先转成列表对象 coords_list <- eval(parse(text = read_txt_file)) # 提取x、y向量 x <- sapply(coords_list, `[`, 1) y <- sapply(coords_list, `[`, 2)
这个方法更简洁,结果和上面完全一致。
小提示
如果你的read_txt_file是多个元素的向量(比如原文件每行一个坐标对),可以先把它们合并成一个完整的字符串再处理:
full_coords_str <- paste(read_txt_file, collapse = "") coords_list <- eval(parse(text = full_coords_str))
内容的提问来源于stack exchange,提问作者hamp
相关产品推荐
相关产品推荐

