gpt4 book ai didi

r - 编写函数来计算字符串中元音的数量

转载 作者:行者123 更新时间:2023-12-04 16:42:10 26 4
gpt4 key购买 nike

我被分配了以下作业问题:

Write a function that will take a string as input and return the number of vowels in that string as the output

• Name the function get_vowel_count
• Make sure to document what the function does using comments in R

但是当我给函数提供一个给定的字符串时,当我给出的字符串中明显有元音时(例如“John Doe”包含三个元音),它会在控制台中吐出 0 个元音

我已经稍微更改了 if 语句以更好地解释元音,但我认为程序只会在字符串正好是“a”、“e”、“i”时计算等

我不确定存在什么语法来表示“包含”而不是“等于”


mystr <- "John Doe"

get_vowel_count <- function(phrase) {
counter <- 0
for (i in phrase) {
if ((i == 'a') | (i == 'e') | (i == 'i') | (i == 'o') | (i == 'u')) {
counter <- counter + 1
}
}
output <- paste("Your phrase has", counter, "vowels in it!" )
print(output)
}

get_vowel_count(mystr)

输出显示 0 个元音字母,其中预期应该说“您的短语中有 3 个元音字母!”

最佳答案

for (i in phrase) 并不像您想象的那样工作(特别是,它不像在 Python 中那样工作)。在 R 中,phrase 被视为包含单个字符串的1 元素 向量,而不是(如在 Python 中)有序的字母集合。

所以第一次通过你的循环时,i 等于“John Doe”,它不等于任何元音。你的循环只重复一次。

  • 您可以使用 strsplit(phrase,"")[[1]] 将字符串拆分为字母向量

  • 或者你可以使用类似 (for i in seq(nchar(phrase)) ... if (substr(phrase,i,i)==...)

  • 为了简化元音测试,您可以使用 if (substr(phrase,i,i) %in% c("a","e","i","o","u")) ...

关于r - 编写函数来计算字符串中元音的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58385904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com