将非均匀数据读入R

将非均匀数据读入R,r,R,我正在努力将非均匀数据读入R 我取得了以下成就: 使用“readLines”读取中的文本文件数据 使用“grep”查找我想要的数据块 使用grep中的索引创建仅包含该数据块的变量(名为“block”) 到目前为止一切都很好-我现在有了我想要的数据。但是-它是一个字符变量,只有一列包含所有数据 这将创建一个名为“block”的变量示例(前3行): 我的目标是将此数据作为data.frame,每个数据点都有单独的列 我尝试使用strsplit没有帮助(解决方案是否涉及strsplit?)-这里最

我正在努力将非均匀数据读入R

我取得了以下成就:

  • 使用“readLines”读取中的文本文件数据
  • 使用“grep”查找我想要的数据块
  • 使用grep中的索引创建仅包含该数据块的变量(名为“block”)
到目前为止一切都很好-我现在有了我想要的数据。但是-它是一个字符变量,只有一列包含所有数据

这将创建一个名为“block”的变量示例(前3行):

我的目标是将此数据作为data.frame,每个数据点都有单独的列

我尝试使用strsplit没有帮助(解决方案是否涉及strsplit?)-这里最好的方法是什么?欢迎提出任何建议/反馈


strsplit(block,“\s”,fixed=F)

实际上-这看起来可能有效


但是想检查这是否是解决这种情况的最佳方法…?

以下任一方法都适用于您:

## Creates a "data.table"
library(splitstackshape)
cSplit(data.table(x = block), "x", " ")

## Creates a "data.frame"
read.table(text = block, header = FALSE)

## Creates a character matrix
do.call(rbind, strsplit(block, "\\s+"))

## Like the above, but likely to be faster
library(stringi)
stri_split_regex(block, "\\s+", simplify = TRUE)
注意最后两个选项的
“\\s+”
。“+”用于匹配多个空格。

非常感谢!“read.table”解决方案是完美的。感谢您抽出时间发布。很有帮助
## Creates a "data.table"
library(splitstackshape)
cSplit(data.table(x = block), "x", " ")

## Creates a "data.frame"
read.table(text = block, header = FALSE)

## Creates a character matrix
do.call(rbind, strsplit(block, "\\s+"))

## Like the above, but likely to be faster
library(stringi)
stri_split_regex(block, "\\s+", simplify = TRUE)