我有一个唯一的文本文件,其中非数字短语作为列标题,制表符分隔的数字矢量作为每个向量中的值,但是非数字标题与每个向量中的最终数值相邻。下面的示例(text_file)类似于此的简单版本。该文件另存为“ txt”文件,我想将其转换为R格式的矩阵或data.frame格式(示例提供了所需的格式)。有谁知道如何做到这一点?
我已经尝试了多种方法,但不确定如何处理
text_file <- 'cat .210 -.123 .456dog 1.22 2.32 3.33\'\'\ 4.11 .021 .000'
#then, assume that is saved as a '.txt' file in directory
data <- read.table ('text_file.txt')
#desired output looks like so#
what_data_should_resemble = as.data.frame(matrix( c(.210, -.123, .456, 1.22, 2.32, 3.33, 4.11, .021, .000),
nrow=3,
ncol=3,
byrow = TRUE))
colnames(what_data_should_resemble) <- c('cat', 'dog', '')
what_data_should_resemble
答案 0 :(得分:2)
您可以使用readLines()
读取数据,然后用新行替换列名,然后使用read.table()
再次读取。
text_to_read <- 'cat .210 -.123 .456dog 1.22 2.32 3.33\'\'\ 4.11 .021 .000'
text <- readLines(textConnection(text_to_read))
read.table(text=gsub("cat|dog|''", "\n", text), col.names = c("cat", "dog", "x"))
cat dog x
1 0.21 -0.123 0.456
2 1.22 2.320 3.330
3 4.11 0.021 0.000
@thelatemail指出,您可以使用regex对其进行抽象处理,以处理任意数量的列。
read.table(text=gsub("[^\\d.\\-\\s]+", "\n", text, perl = TRUE))