在 R 中创建一个仅大写向量的前 n 个元素的函数
Creating a function in R that capitalizes ONLY the first n elements of a vector
我想创建一个函数 (v,n),其中 v 是一个字符串值向量,n 是一个整数。此函数应仅将向量的前 n 个元素大写。并且如果n大于length(v)
,它应该将向量中的所有元素大写。
所以如果我有:v = c("a","b","c","d")
和 n = 3,函数应该 return:
[1] ("A", "B", "C", "d")
到目前为止,我有这个:
function(v, n){
if(n <= length(v))
{i = seq_len(n)
v[i]= toupper(v[i])}
return(v)}
但是当我尝试将其应用于矢量时(使用 sapply):
test = sapply(v, function, n=3)
没有任何反应。向量中的 None 个元素大写
以下是如何在 R 中定义函数以及如何调用它。
my_toupper <- function(v, n){
if(n <= length(v)) {
i = seq_len(n)
v[i]= toupper(v[i])
}
return(v)
}
my_toupper(v = c("a","b","c","d"), n = 3)
上面的命令return这个结果
[1] "A" "B" "C" "d"
toupper
是矢量化函数,因此您不需要循环或任何应用函数。
v = c("a","b","c","d")
capitilize_n <- function(vec, n) {
n <- min(n, length(vec))
inds <- seq_len(n)
vec[inds] <- toupper(vec[inds])
return(vec)
}
capitilize_n(v, 3)
#[1] "A" "B" "C" "d"
capitilize_n(v, 8)
#[1] "A" "B" "C" "D"
我想创建一个函数 (v,n),其中 v 是一个字符串值向量,n 是一个整数。此函数应仅将向量的前 n 个元素大写。并且如果n大于length(v)
,它应该将向量中的所有元素大写。
所以如果我有:v = c("a","b","c","d")
和 n = 3,函数应该 return:
[1] ("A", "B", "C", "d")
到目前为止,我有这个:
function(v, n){
if(n <= length(v))
{i = seq_len(n)
v[i]= toupper(v[i])}
return(v)}
但是当我尝试将其应用于矢量时(使用 sapply):
test = sapply(v, function, n=3)
没有任何反应。向量中的 None 个元素大写
以下是如何在 R 中定义函数以及如何调用它。
my_toupper <- function(v, n){
if(n <= length(v)) {
i = seq_len(n)
v[i]= toupper(v[i])
}
return(v)
}
my_toupper(v = c("a","b","c","d"), n = 3)
上面的命令return这个结果
[1] "A" "B" "C" "d"
toupper
是矢量化函数,因此您不需要循环或任何应用函数。
v = c("a","b","c","d")
capitilize_n <- function(vec, n) {
n <- min(n, length(vec))
inds <- seq_len(n)
vec[inds] <- toupper(vec[inds])
return(vec)
}
capitilize_n(v, 3)
#[1] "A" "B" "C" "d"
capitilize_n(v, 8)
#[1] "A" "B" "C" "D"