有Excel函数叫left
, right
,和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个字符的新载体。
您正在寻找的功能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"