如何创建一个函数来提取向量中包含的字符串的最后 n 个字母
How to create a function that extracts the last n letters of strings contained in a vector
我开始在 R 中编程,我必须创建一个 final
函数来接收一个向量 v
的字符串和一个整数 n
,以及 [=41] =] 与 v
长度相同的另一个向量,在每个位置包含一个字符串,其中只有原始字符串的最后 n
个字母。
此外,我必须使用函数 substr (ch, start_pos, end_pos)
和 nchar
函数 returns 字符串的长度(字母数)。将其应用于下面定义的向量 test
,通过提取每个单词的最后 3 个字母来检查其操作,并将结果保存在变量 final.test
中。不需要考虑字符串本身小于我们要取的最后字母个数的情况。
不能使用循环或应用/lapply。
也就是说,我必须创建一个函数,在引入向量时,例如 c ("Hola", "que", "tal"), returns "la", "ue" , "al" 如果我们放置那个向量并且给 n 赋值 2(从末尾开始计数并在 n 处停止和提取)。
我试过这样做:
finales <- function(v, n){
substr = substr(v, nchar(v[1:n]), n)
return(substr)
}
但它 returns 对我来说:
> finales(prueba,3)
[1] "" "s" "n" "" "e" "ad" "" "ar"
这不是我要找的东西,但我不知道如何确定从向量的每个元素的末尾到我们将在函数 (n) 中引入的数字必须计数的内容。
函数必须通过这些测试:
prueba = c("Esto", "es", "un", "vector", "de", "cadenas", "de", "caracteres")
length(finales(prueba, 3)) == length(prueba)
all(finales(prueba, 3) == c('sto', 'es', 'un','tor','de','nas','de','res'))
如果你能帮助我,我将不胜感激
substr
是向量化的,所以你可以:
final <- function(v, n) substr(v, nchar(v) - (n - 1), nchar(v))
因此,例如:
final(prueba, 1)
#> [1] "o" "s" "n" "r" "e" "s" "e" "s"
final(prueba, 2)
#> [1] "to" "es" "un" "or" "de" "as" "de" "es"
final(prueba, 3)
#> [1] "sto" "es" "un" "tor" "de" "nas" "de" "res"
由 reprex package (v2.0.0)
于 2021-11-15 创建
我开始在 R 中编程,我必须创建一个 final
函数来接收一个向量 v
的字符串和一个整数 n
,以及 [=41] =] 与 v
长度相同的另一个向量,在每个位置包含一个字符串,其中只有原始字符串的最后 n
个字母。
此外,我必须使用函数 substr (ch, start_pos, end_pos)
和 nchar
函数 returns 字符串的长度(字母数)。将其应用于下面定义的向量 test
,通过提取每个单词的最后 3 个字母来检查其操作,并将结果保存在变量 final.test
中。不需要考虑字符串本身小于我们要取的最后字母个数的情况。
不能使用循环或应用/lapply。
也就是说,我必须创建一个函数,在引入向量时,例如 c ("Hola", "que", "tal"), returns "la", "ue" , "al" 如果我们放置那个向量并且给 n 赋值 2(从末尾开始计数并在 n 处停止和提取)。
我试过这样做:
finales <- function(v, n){
substr = substr(v, nchar(v[1:n]), n)
return(substr)
}
但它 returns 对我来说:
> finales(prueba,3)
[1] "" "s" "n" "" "e" "ad" "" "ar"
这不是我要找的东西,但我不知道如何确定从向量的每个元素的末尾到我们将在函数 (n) 中引入的数字必须计数的内容。
函数必须通过这些测试:
prueba = c("Esto", "es", "un", "vector", "de", "cadenas", "de", "caracteres")
length(finales(prueba, 3)) == length(prueba)
all(finales(prueba, 3) == c('sto', 'es', 'un','tor','de','nas','de','res'))
如果你能帮助我,我将不胜感激
substr
是向量化的,所以你可以:
final <- function(v, n) substr(v, nchar(v) - (n - 1), nchar(v))
因此,例如:
final(prueba, 1)
#> [1] "o" "s" "n" "r" "e" "s" "e" "s"
final(prueba, 2)
#> [1] "to" "es" "un" "or" "de" "as" "de" "es"
final(prueba, 3)
#> [1] "sto" "es" "un" "tor" "de" "nas" "de" "res"
由 reprex package (v2.0.0)
于 2021-11-15 创建