R提取并获取字符串的相应数值
R Extract and get the corresponding Numeric values of a string
需要帮助寻找一个函数来提取和获取由“-”分隔的请求字符串的值
数据:
x <- c("AA-AA/BB-11/CC-22/dd-1", "AA-AA/BB-33/CC-331")
期望输出:
BB should get vector of (11, 33)
CC should get vector of (22, 331)
您可以使用 stringr 完成任务:
library(stringr)
x <- c("AA-AA/BB-11/CC-22/dd-1", "AA-AA/BB-33/CC-331")
BB <- as.numeric(str_match(x, "/BB-([0-9]+)")[, 2])
CC <- as.numeric(str_match(x, "/CC-([0-9]+)")[, 2])
你可以使用 chartr
来改变你的拆分字符,然后将其输入 read.table
:
tmp <- read.table(text=chartr("-/", " \n", x), stringsAsFactors=FALSE)
# V1 V2
#1 AA AA
#2 BB 11
#3 CC 22
#4 dd 1
#5 AA AA
#6 BB 33
#7 CC 331
如果您确实需要单独的向量:
split(tmp$V2, tmp$V1)
#$AA
#[1] "AA" "AA"
#
#$BB
#[1] "11" "33"
#
#$CC
#[1] "22" "331"
#
#$dd
#[1] "1"
需要帮助寻找一个函数来提取和获取由“-”分隔的请求字符串的值
数据:
x <- c("AA-AA/BB-11/CC-22/dd-1", "AA-AA/BB-33/CC-331")
期望输出:
BB should get vector of (11, 33)
CC should get vector of (22, 331)
您可以使用 stringr 完成任务:
library(stringr)
x <- c("AA-AA/BB-11/CC-22/dd-1", "AA-AA/BB-33/CC-331")
BB <- as.numeric(str_match(x, "/BB-([0-9]+)")[, 2])
CC <- as.numeric(str_match(x, "/CC-([0-9]+)")[, 2])
你可以使用 chartr
来改变你的拆分字符,然后将其输入 read.table
:
tmp <- read.table(text=chartr("-/", " \n", x), stringsAsFactors=FALSE)
# V1 V2
#1 AA AA
#2 BB 11
#3 CC 22
#4 dd 1
#5 AA AA
#6 BB 33
#7 CC 331
如果您确实需要单独的向量:
split(tmp$V2, tmp$V1)
#$AA
#[1] "AA" "AA"
#
#$BB
#[1] "11" "33"
#
#$CC
#[1] "22" "331"
#
#$dd
#[1] "1"