r - 将列表拆分为值列表列表
问题描述
我正在寻找拆分列表,例如
c('SET ANSI_NULLS ON',
'GO',
'SET QUOTED_IDENTIFIER ON',
'GO',
'CREATE TABLE dbo.Person(',
' Person int NOT NULL,',
' acct varchar(1) NOT NULL,',
' Kpl varchar(10) NULL,',
' Fac varchar(10) NULL,',
' Inst varchar(10) NULL,',
' CONSTRAINT PK_Person PRIMARY KEY CLUSTERED ',
'(',
' Person ASC',
')WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY',
') ON PRIMARY',
'GO',
'ALTER TABLE dbo.Person ADD DEFAULT (getdate()) FOR _Timestamp',
'GO',
'ALTER TABLE dbo.Person ADD DEFAULT (host_name()) FOR _Hostname',
'GO',
'ALTER TABLE dbo.Person ADD DEFAULT (original_login()) FOR _Username',
'GO'
)
进入列表列表,只要GO
找到值就开始一个新列表:
c(c('SET ANSI_NULLS ON'),
c('SET QUOTED_IDENTIFIER ON'),
c('CREATE TABLE dbo.Person(',
' Person int NOT NULL,',
' acct varchar(1) NOT NULL,',
' Kpl varchar(10) NULL,',
' Fac varchar(10) NULL,',
' Inst varchar(10) NULL,',
' CONSTRAINT PK_Person PRIMARY KEY CLUSTERED ',
'(',
' Person ASC',
')WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY',
') ON PRIMARY'
),
c('ALTER TABLE dbo.Person ADD DEFAULT (getdate()) FOR _Timestamp'),
c('ALTER TABLE dbo.Person ADD DEFAULT (host_name()) FOR _Hostname'),
c('ALTER TABLE dbo.Person ADD DEFAULT (original_login()) FOR _Username')
)
解决方案
这对你有用吗?
go_pos <- grep("GO", x) # find positions of "GO"s
go_groups <- cumsum(grepl("GO", x))[-go_pos] # build a grouping for split() then drop "GO"s
split(x[-go_pos], go_groups) # drop "GO"s then split on groups
推荐阅读
- android - 长时间延迟收到音量变化通知
- python - Python“从sklearn import svm”导致SyntaxError
- android - 找不到相应的方法处理程序“public void registerUser(android.view.View)”
- java - 在 Java 中使用字符串对文本文件中的数字进行排序
- uwp - 在没有控件的情况下处理 UWP 应用中的键盘事件
- c - C查询字符串解析
- javascript - 如何让这个循环打印我需要的值?
- python - 关于 Tensorflow Estimator 实践的问题,Tensorflow 操作应该在“my_model”还是其他地方进行?
- python - Python:调用一个函数并从其他函数返回
- sql - 两个位置都在同一记录中的 SQL STDistance