首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:创建一个函数,将向量的前n个元素大写

R:创建一个函数,将向量的前n个元素大写
EN

Stack Overflow用户
提问于 2020-12-20 18:27:15
回答 2查看 31关注 0票数 1

我试图创建一个函数(v,n),其中v是字母/单词的向量,n是整数。此函数应返回相同的向量,但以大写字母中的"n“开头元素返回。

到目前为止,我已经做了这个:

代码语言:javascript
复制
capital <- function(v, n){
  c <- v[n]
  return (toupper(c))
}

但是这个函数只返回大写字母中的"n“元素,而不是所有第一个"n”元素。而且它也不返回链的其余部分。

所以,如果我们有v <- c("alpha","bravo","charlie","delta")和n <- 2。我的函数返回:

代码语言:javascript
复制
[1] "BRAVO"

但我希望它能回来:

代码语言:javascript
复制
[1] "ALPHA" "BRAVO" "charlie" "delta"

有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-20 18:28:23

一种选择是根据'n‘的序列对vector进行子集,并通过应用toUpper重新分配

代码语言:javascript
复制
i <- seq_len(n)
v[i] <- toupper(v[i])

-output

代码语言:javascript
复制
v
#[1] "ALPHA"   "BRAVO"   "charlie" "delta" 

在OP的函数中,return不根据索引分配

代码语言:javascript
复制
capital <- function(v, n){
    stopifnot(n <= length(v))
    i <- seq_len(n) # // create a sequence from n
    v[i] <- toupper(v[i]) # // apply toupper based on the index
    return(v) # // return the updated vector
  }

-output

代码语言:javascript
复制
capital(v, n)
#[1] "ALPHA"   "BRAVO"   "charlie" "delta"  
票数 1
EN

Stack Overflow用户

发布于 2020-12-20 18:29:44

我们可以尝试:

代码语言:javascript
复制
capital <- function(v, n){
  c1 <- v[1:n]
  c2 <- toupper(c1)
  c3 <- c(c2,v[(n+1):length(v)])
  return (c3)
}
capital(v =  c("alpha", "bravo", "charlie", "delta"),n=2 )

一个完整的解释是:

vector.

  • Finally,
  1. c1中我们选择单词的数量,
  2. c2中将它们大写,
  3. c3中我们与原始的c1合并。H 212G 213
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65383348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档