在R中一个向量提取的条目的字符(Extracting characters from entries

2019-06-27 04:14发布

有Excel函数叫leftright ,和mid ,在那里你可以提取细胞的条目的一部分。 例如, =left(A1, 3)将返回3留在单元格A1大多数字符,和=mid(A1, 3, 4)将开始与单元格A1中的第三个字符,并给您的字符数3 - 6 。是R中有类似的功能或类似的简单方法可以做到这一点?

作为一个简化的样品的问题,我想利用一个向量

sample<-c("TRIBAL","TRISTO", "RHOSTO", "EUGFRI", "BYRRAT")

和创建包含每个条目中前3个字符3个新的载体,在每个条目中的中间的2个字符,并且在每个条目中的最后4个字符。

该Excel没有一个函数(据我所知)一个稍微复杂的问题是如何建立,由第1,第3,并从每个进入第5个字符的新载体。

Answer 1:

您正在寻找的功能substr或其近亲substring

首字符是直截了当:

substr(sample, 1, 3)
[1] "TRI" "TRI" "RHO" "EUG" "BYR"

所以在提取定义的位置某些字符:

substr(sample, 2, 3)
[1] "RI" "RI" "HO" "UG" "YR"

为了让尾部字符,你有两个选择:

substr(sample, nchar(sample)-3, nchar(sample))
[1] "IBAL" "ISTO" "OSTO" "GFRI" "RRAT"

substring(sample, nchar(sample)-3)
[1] "IBAL" "ISTO" "OSTO" "GFRI" "RRAT"

而最终“复杂”的问题:

characters <- function(x, pos){
  sapply(x, function(x)
    paste(sapply(pos, function(i)substr(x, i, i)), collapse=""))
}
characters(sample, c(1,3,5))
TRIBAL TRISTO RHOSTO EUGFRI BYRRAT 
 "TIA"  "TIT"  "ROT"  "EGR"  "BRA" 


文章来源: Extracting characters from entries in a vector in R
标签: r extract