Excel中有一些名为left
,right
和mid
的函数,您可以在其中从单元格中提取部分条目。例如,=left(A1, 3)
将返回单元格A1中最左边的3个字符,=mid(A1, 3, 4)
将以单元格A1中的第三个字符开头,并为您提供字符编号3 - 6.是否存在类似的功能R或类似的直接方式来做到这一点?
作为简化的示例问题,我想采用矢量
sample<-c("TRIBAL","TRISTO", "RHOSTO", "EUGFRI", "BYRRAT")
创建3个新向量,每个条目包含前3个字符,每个条目中间2个字符,每个条目中最后4个字符。
一个稍微复杂的问题,Excel没有(我知道)的功能将是如何使用每个条目中的第1个,第3个和第5个字符创建一个新的向量。
答案 0 :(得分:8)
您正在寻找功能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"