如何对 R 中的百分比进行 strsplit

How to do a strsplit on percentages in R

从这个字符串 border-color:#002449;left:74.4%top;37%; 我想将第一个百分比 74.4% 设为一个名为 X 的变量,将第二个百分比 37% 设为一个名为 [=15= 的变量].

我可以用 str_extract 和正则表达式完成这个,但我宁愿通过 strsplit 创建变量 XY

我现在在做什么:

coord <- str_extract_all(s, "\d+(\.\d+){0,1}%")[[1]]

X <- coord[1] ; Y <- coord[2]

这很好用,但我的 data.frame 目前有 54 行,而不仅仅是 1 行。我相信做一个 strsplit 会更好。

如有任何帮助,我们将不胜感激。如果需要任何进一步的信息,请告诉我。

我们可以使用rbind coord

library(stringr)
coord <- str_extract_all(s, "\d+(\.\d+){0,1}%")
d1 <- as.data.frame(do.call(rbind, coord), stringsAsFactors=FALSE)

str_extract 的另一个选项是

coord <- str_extract_all(s, "\d+(?:%)")
d2 <- as.data.frame(do.call(rbind, coord), stringsAsFactors=FALSE)

有了strsplit,我们可以试试

coord <- lapply(strsplit(s, '[0-9.]+%(*SKIP)(*F)|.', 
                     perl=TRUE), setdiff, "")
d3 <- as.data.frame(do.call(rbind, coord), stringsAsFactors=FALSE)

数据

s <- "border-color:#002449;left:74.4%top;37%;"