在对以下单词进行以下操作之后,我想找到任何单词的中点:
>x = 'hello'
>y = strsplit(x, '')
>y
[[1]]
[1] "h" "e" "l" "l" "o"
>z = unlist(y)
>z
[1] "h" "e" "l" "l" "o"
Run Code Online (Sandbox Code Playgroud)
这样做可以:
> z[1]
[1] "h"
> z[4]
[1] "l"
Run Code Online (Sandbox Code Playgroud)
不同之处在于,z=unlist(y)当你尝试z[index]回来之前NA,例如:
> x = 'hello'
> strsplit(x, '')
[[1]]
[1] "h" "e" "l" "l" "o"
> x[1]
[1] "hello"
> x[2]
[1] NA
Run Code Online (Sandbox Code Playgroud)
无论如何,我想要做的是找到这种格式的单词的中点,以便输出类似于:
"l"
Run Code Online (Sandbox Code Playgroud)
在"你好"这个词的情况下.此外,在这个例子中,我们有一个包含5个字母的单词,可以轻松地将单个字符指定为中点,但对于像"bake"这样的单词,我想将"a"和"k"同时指定为中点.
尝试
f1 <- function(str1){
N <- nchar(str1)
if(!N%%2){
res <- substr(str1, N/2, (N/2)+1)
}
else{
N1 <- median(sequence(N))
res <- substr(str1, N1, N1)
}
res
}
f1('bake')
#[1] "ak"
f1('hello')
#[1] "l"
Run Code Online (Sandbox Code Playgroud)