我如何使用R从一个大的文本文件中拖出几行选择行?
我对堆栈溢出相当陌生,但在搜索引擎中没有发现。如果不应该在这里问这个问题,请告诉我 我有一个很大的文本文件。它有16个条目,每个条目如下所示:我如何使用R从一个大的文本文件中拖出几行选择行?,r,R,我对堆栈溢出相当陌生,但在搜索引擎中没有发现。如果不应该在这里问这个问题,请告诉我 我有一个很大的文本文件。它有16个条目,每个条目如下所示: AI_File 10 Version Date 20200708 08:18:41 Prompt1 LOC Resp1 H**** Prompt2 QUAD Resp2 1012 TransComp c-p-s Model Horizontal ### Computed Results LAI 4.36 SEL
AI_File 10
Version
Date 20200708 08:18:41
Prompt1 LOC
Resp1 H****
Prompt2 QUAD
Resp2 1012
TransComp c-p-s
Model Horizontal
### Computed Results
LAI 4.36
SEL 0.47
ACF 0.879
DIFN 0.031
MTA 40.
SEM 1.
SMP 5
### Ring Summary
MASK 1 1 1 1 1
ANGLES 7.000 23.00 38.00 53.00 68.00
AVGTRANS 0.038 0.044 0.055 0.054 0.030
ACFS 0.916 0.959 0.856 0.844 0.872
CNTCT# 3.539 2.992 2.666 2.076 1.499
STDDEV 0.826 0.523 0.816 0.730 0.354
DISTS 1.008 1.087 1.270 1.662 2.670
GAPS 0.028 0.039 0.034 0.032 0.018
### Contributing Sensors
### Observations
A 1 20200708 08:19:12 x 31.42 38.30 40.61 48.69 60.28
L 2 20200708 08:19:12 1 5.0e-006
B 3 20200708 08:19:21 x 2.279 2.103 1.408 5.027 1.084
B 4 20200708 08:19:31 x 1.054 0.528 0.344 0.400 0.379
B 5 20200708 08:19:39 x 0.446 1.255 2.948 3.828 1.202
B 6 20200708 08:19:47 x 1.937 2.613 5.909 3.665 5.964
B 7 20200708 08:19:55 x 0.265 1.957 0.580 0.311 0.551
几乎所有这些都是垃圾信息,我希望为整个文件运行一些代码,只为所有16个条目提供“Resp2”和“LAI”行。这样的任务在R中可行吗?如果是,我会怎么做
非常感谢您提供的任何帮助,如果还有更多信息需要澄清,请告诉我。我已将您的文件保存为文本文件,并在行中进行了阅读。然后可以使用regex提取所需的行。然而,我觉得我的方法相当笨拙,我打赌还有更优雅的方法(也许还可以使用(unix)命令行工具)
data基于tidyverse的解决方案可以如下所示
library(dplyr)
library(vroom)
library(stringr)
library(tibble)
library(tidyr)
vroom_lines('data') %>%
enframe() %>%
filter(str_detect(value, 'Resp2|LAI')) %>%
transmute(value = str_squish(value)) %>%
separate(value, into = c('name', 'value'), sep = ' ')
# name value
# <chr> <chr>
# 1 Resp2 1012
# 2 LAI 4.36
库(dplyr)
图书馆(vroom)
图书馆(stringr)
图书馆(tibble)
图书馆(tidyr)
vroom_行('数据')%%>%
enframe()%>%
过滤器(str|U检测(值'Resp2 | LAI'))%>%
变形(值=str_squish(值))%>%
分离(值,分为=c('name','value'),sep='')
#名称值
#
#1响应2 1012
#2.4.36
谢谢您的回复!当我运行“DATAYAXCracTTHT”时,意味着你只有18个条目用于RES2,但是对于LAI只有19个条目,因为在DATA框架中,所有列的长度都是相同的,所以它给出了一个错误的感谢!这就解决了这个问题。这个代码很好,我真的很感激帮助。很高兴我能帮助。如果答案是有用的,请考虑接受它。
library(dplyr)
library(vroom)
library(stringr)
library(tibble)
library(tidyr)
vroom_lines('data') %>%
enframe() %>%
filter(str_detect(value, 'Resp2|LAI')) %>%
transmute(value = str_squish(value)) %>%
separate(value, into = c('name', 'value'), sep = ' ')
# name value
# <chr> <chr>
# 1 Resp2 1012
# 2 LAI 4.36