简体   繁体   English

从R中的1创建2个向量

[英]create 2 vectors from 1 in R

I am using base R trying to split the following character string into 2: 我正在使用base R尝试将以下字符串拆分为2:

some_text | number1 (number2) | number1 (number2) | number1 (number2)

vec1 <- number1 number1 number1 

vec2 <- number2 number2 number2

I have been able to remove the some_text and the | 我已经能够删除some_text| symbol but need help creating the vectors based on pattern matching. 符号,但需要帮助以基于模式匹配来创建向量。

Here is a base R option using strsplit , sub , and apply : 这是使用strsplitsubapply的基本R选项:

x <- "some_text | 1 (2) | 3 (4) | 5 (6)"
y <- strsplit(x, "\\s*\\|\\s*", perl=TRUE)
number1 <- sapply(y, function(x) { sub(" \\(\\d+\\)", "", x) })[2:4]
number2 <- sapply(y, function(x) { sub("\\d+ \\((\\d+)\\)", "\\1", x) })[2:4]

number1
number2

[1] "1" "3" "5"
[1] "2" "4" "6"

Demo 演示

We can use base R with strsplit 我们可以将base Rstrsplit一起strsplit

m1 <- lapply(strsplit(str1, "[ |()]"), function(x)
                  matrix(x[x!=""][-1], ncol=2, byrow= TRUE))[[1]]
vec1 <- m1[,1]
vec2 <- m1[,2] 
vec1
#[1] "number1" "number1" "number1"

vec2
#[1] "number2" "number2" "number2"

data 数据

str1 <- 'some_text | number1 (number2) | number1 (number2) | number1 (number2)'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM