标签: strsplit

字符向量上的“下标超出范围”

我有一个向量“nameAlpha”,例如c(“Mark Twain”,“Phil Hall”,“Michael P. O'Connor”,“”,...)。我想将每个名字传递给另一个向量“nameAlpha_first”。我运行这个

nameAlpha_first <- sapply(strsplit(nameAlpha, "\\s+"), "[[", 1)
Run Code Online (Sandbox Code Playgroud)

但我得到

Error in FUN(X[[12L]], ...) : subscript out of bounds
Run Code Online (Sandbox Code Playgroud)

难道是因为向量中很少有元素是空的吗?我该如何解决它?

r strsplit sapply

2
推荐指数
1
解决办法
7348
查看次数

在 dplyr 中的两列之间进行过滤,其中一列是列表或向量

尝试通过比较列中prod存在的这两列来过滤此 df lob

可重现的代码:

df <- data.frame(prod = c("CES", "Access", "Access", "CES"), lob = c("Access;Entertainment", "CES", "Access", "Access;Entertainment;CES"))

    prod                      lob
1    CES     Access;Entertainment
2 Access                      CES
3 Access                   Access
4    CES Access;Entertainment;CES
Run Code Online (Sandbox Code Playgroud)

预期结果:

    prod                      lob
1 Access                   Access
2    CES Access;Entertainment;CES
Run Code Online (Sandbox Code Playgroud)

我尝试将 lob 列拆分为向量或包含元素的列表,然后dplyr filtergrepl(prod, lob), or 一起使用prod %in% lob,但似乎都不起作用

df %>%
filter(prod %in% lob)

df %>%
mutate(lob = strsplit(lob, ";")) %>%
filter(prod %in% lob)

df %>%
mutate(lob = strsplit(lob, ";")) …
Run Code Online (Sandbox Code Playgroud)

r strsplit dplyr

2
推荐指数
1
解决办法
786
查看次数

我在 R 中的字符列上应用了 NA 的separate() 函数

我正在尝试拆分格式非常不同的列。例如:

pharma <- c("DOXORUBICINA CLORH. FAM 50MG POL O LIOF",
                   "DROSPIRENONA/ETINILESTR. 3/0,02MG CM REC",
                   "DROSPIRENONA/ETINILESTR. 3/0,03MG CM REC",
                   "ETRAVIRINA 100 MG CM",
                   "AGALSIDASA ALFA 1MG/ML X 3,5 ML FAM")
Run Code Online (Sandbox Code Playgroud)

我正在使用separate()在两个不同的列中进行拆分(我需要将产品名称(即 DOXORUBICINA CLORH. FAM)和详细信息(50MG POL O LIOF)分开)。代码是:

separate(data.frame(A = pharma), col = "A" , into = c("x","y"),sep = "(?<=[a-zA-Z])\\s*(?=[0-9])")
Run Code Online (Sandbox Code Playgroud)

但我有来自 R 的下一个:

                                         x               y
1                  DOXORUBICINA CLORH. FAM 50MG POL O LIOF
2 DROSPIRENONA/ETINILESTR. 3/0,02MG CM REC            <NA>
3 DROSPIRENONA/ETINILESTR. 3/0,03MG CM REC            <NA>
4                               ETRAVIRINA       100 MG CM …
Run Code Online (Sandbox Code Playgroud)

regex r strsplit

2
推荐指数
1
解决办法
57
查看次数

拆分字符串、标记子字符串并将标记转换为数字向量

我有一个字符串:

String <- "268.1,271.1,280.9,294.7,285.6,288.6,384.4\n124.8,124.2,116.2,117.7,118.3,122.0,168.3\n18,18,18,18,18,18,18"
Run Code Online (Sandbox Code Playgroud)

我想将它分成三个基于\n.

我使用以下代码做到了这一点:

strsplit(String, "\n")
Run Code Online (Sandbox Code Playgroud)

结果是三个子串。

  1. 我怎样才能得到三个独立的存在,以便我可以使用每个向量进行计算?

  2. 如何标记子字符串以创建数值向量?

string r token strsplit

2
推荐指数
1
解决办法
312
查看次数

从 R 中删除包含数字的向量元素

我有一些以农村财产命名的文件,如下所示:

v1 <- c("Badger", "Hill", "Farm", "1.json")
v2 <- c("Buffalo", "Pass", "Farm", "2.json")
> v1
[1] "Badger" "Hill"   "Farm"   "1.json"
> v2
[1] "Buffalo" "Pass"    "Farm"    "2.json"
Run Code Online (Sandbox Code Playgroud)

我设法分割文件名元素,但我只想保留那些不包含任何数字的元素。期望的输出是:

> v1
[1] "Badger" "Hill"   "Farm"  
> v2
[1] "Buffalo" "Pass"    "Farm"
Run Code Online (Sandbox Code Playgroud)

很简单,但我就是无法理解它。我怎样才能做到这一点?

r strsplit

2
推荐指数
1
解决办法
65
查看次数

分隔两个不同的分隔符并截断

我有一个小问题,例如

a <- as_tibble(c("201.1, 202 (abc) 203, 204", "301 / 302.22 def, 303"))

  value                  
  <chr>                  
1 201.1, 202 (abc) 203, 204
2 301 / 302.22 def, 303    
Run Code Online (Sandbox Code Playgroud)

现在我想获得一个包含两列的 data.frame

[1,] 201.1  202
[2,] 301    302.22
Run Code Online (Sandbox Code Playgroud)

通过剪切第二个数字之后的所有内容(第一行中的 202,第二行中的 302.22)使用分隔符“,”或“/”分隔表达式的剩余部分以获得两列。

r delimiter strsplit

2
推荐指数
1
解决办法
83
查看次数

使用粘贴列表

我试图理解strsplit和的paste函数,它们是反函数.但是,当我strsplit是一个向量时,会返回一个列表,如下所示:

> strsplit(c("on,e","tw,o","thre,e","fou,r"),",")
[[1]]
[1] "on" "e" 

[[2]]
[1] "tw" "o" 

[[3]]
[1] "thre" "e"   

[[4]]
[1] "fou" "r"  
Run Code Online (Sandbox Code Playgroud)

我试着使用lapply,以cat列表的元素重新走到一起,但它不工作:

> lapply(strsplit(c("on,e","tw,o","thre,e","fou,r"),","),cat)
on etw othre efou r[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

[[4]]
NULL
Run Code Online (Sandbox Code Playgroud)

相同的公式paste而不是cat实际上什么也没做!为什么我得到这些结果?我怎样才能得到我想要的结果,这又是原始的矢量?

(显然,在我的实际代码中,我试图用更多的东西来做strsplit,cat而不仅仅是返回原始向量,但我认为这个问题的解决方案对我来说很有效.谢谢!)

r paste strsplit

1
推荐指数
1
解决办法
4273
查看次数

在几列中拆分一列字符串

我有数据框

df=data.frame(x=rnorm(8),y=runif(8),longstring=c("foo_100_Case1","foo_125_Case1","bar_100_Case1","bar_125_Case1","foo_100_Case2","foo_125_Case2","bar_100_Case2","bar_125_Case2"),stringsAsFactors = F)
Run Code Online (Sandbox Code Playgroud)

我需要将最后一列拆分为三列,分隔符为"_".我一直在做以下事情:

a=matrix(unlist(strsplit(df$longstring,"_",fixed=T)),8,3,byrow = T)
df$type=a[,1]
df$point=a[,2]
df$case=a[,3]
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种更简单的方法:组合strsplitunlist特别笨拙,并且它不会使代码非常易读.

r strsplit dataframe

1
推荐指数
1
解决办法
390
查看次数

如何拆分字符串并将其存储在列表中?

我有一个字符串,a="100111"并希望将其拆分并存储为b=("1","0","0","1","1","1")长度为6的列表.我尝试使用srtsplit进行拆分,但最终得到一个列表b = ("1" "0" "0" "1" "1" "1"),长度为1.最终目标是获取字符串中的哪些位置为"100111"1.例如,当我拆分并将其存储在b中("1","0","0","1","1","1")然后使用which(b=='1')它想要得到(1,4,5,6)

r strsplit

1
推荐指数
1
解决办法
101
查看次数

在R中拆分句子,其中不需要拆分电子邮件ID或十进制数

我想通过句号或句号将段落分成句子.但在执行此操作时,十进制数字,电子邮件ID也会分成不同的数据帧.任何人都可以帮助我将数据拆分成句子.

例如:

aa = "For Important Disclosure information, please visit our website at 0.5%  https://javatar.bluematrix.com/sellside/Disclosures.action or call 1.888.JEFFERIES. An organization. 0.5% have an analysis."
Run Code Online (Sandbox Code Playgroud)

这应该分成

  1. For Important Disclosure information, please visit our website at 0.5% https://javatar.bluematrix.com/sellside/Disclosures.action or call 1.888.JEFFERIES.
  2. An organization.
  3. 0.5% have an analysis

码:

sentences = as.matrix(unlist(strsplit(aa,"\\.")))
Run Code Online (Sandbox Code Playgroud)

regex string split r strsplit

1
推荐指数
1
解决办法
49
查看次数

标签 统计

r ×10

strsplit ×10

regex ×2

string ×2

dataframe ×1

delimiter ×1

dplyr ×1

paste ×1

sapply ×1

split ×1

token ×1