在R中读取文件获单列数据框,拆分列时separate函数报错如何解决?
解决R中读取空格分隔数据及单列拆分问题
问题根源
read.delim默认以制表符(\t)作为分隔符,但你的数据是多个空格分隔,因此无法自动拆分多列,返回单列数据框。- 使用
separate时错误地传入了整个数据框作为待分割列,而非具体列名(如V1),导致报错。
两种解决方案
方案一:直接正确读取数据(推荐)
无需后续拆分,直接通过指定分隔符读取多列数据:
# 方法1:修改read.delim的分隔符参数 J68_find <- read.delim(file = "fin_tranJ68.out", header = FALSE, sep = "\\s+", # 匹配一个或多个空格 col.names = c("Nr.", "x", "J'", "v''", "J''", "theor_exp")) # 方法2:用read.table(默认支持任意空白分隔) J68_find <- read.table(file = "fin_tranJ68.out", header = FALSE, col.names = c("Nr.", "x", "J'", "v''", "J''", "theor_exp"))
方案二:修复separate函数用法
如果已经读取了单列数据,通过separate拆分时,需指定待分割的列名(V1),并匹配多空格分隔:
library(tidyverse) # 需先加载tidyverse包 J68_find <- J68_find %>% separate(col = V1, # 指定要拆分的列是V1 into = c("Nr.", "x", "J'", "v''", "J''", "theor_exp"), sep = "\\s+") # 按一个或多个空格拆分
内容的提问来源于stack exchange,提问作者Ieva_Brakmane
相关产品推荐
相关产品推荐

