用于替换r中的不同文本字符串的函数

时间:2016-04-21 07:22:19

标签: r function

我正在尝试编写一个用另一个

替换文本的函数
regionChange <- function(x){
x <- sub("vic", "161", x, ignore.case = TRUE) 
x <- sub("sa", "159", x, ignore.case = TRUE)
}

test <- c("vic", "sa")
regionChange(test)
test

我不知道为什么这个功能无法生成

[1]“161”“159” 而不是

[1]“vic”“sa”

我是否需要撰写ifelse声明?我想稍后再添加一些替换,ifelse语句会变得混乱。

2 个答案:

答案 0 :(得分:2)

因为你没有返回X

regionChange <- function(x){
  x <- sub("vic", "161", x, ignore.case = TRUE) 
  x <- sub("sa", "159", x, ignore.case = TRUE)
return(x)}

test <- c("vic", "sa")
test <- regionChange(test)
test

答案 1 :(得分:2)

结果是不可见的,因为在你的函数中,最后一个函数调用是一个赋值。如果您希望函数在退出时打印结果,您可以明确地告诉它,如下所示:

case (true, false, _):
    print("Moved left!!!")
case (true, true, _):
    print("Moved right!!!")
case (false, false, _):
    print("Moved up!!!")
case (false, true, _):
    print("Moved down!!!")

或者您可以将您的功能更改为以下之一:

> print(regionChange(test))
[1] "161" "159"

regionChange <- function(x){
  x <- sub("vic", "161", x, ignore.case = TRUE) 
  x <- sub("sa", "159", x, ignore.case = TRUE)
  x
}

regionChange <- function(x){
  x <- sub("vic", "161", x, ignore.case = TRUE) 
  sub("sa", "159", x, ignore.case = TRUE)
}

请注意,在任何情况下(包括您现有的函数定义),您的函数在使用时都会正确地将其结果分配给向量

regionChange <- function(x){
  x <- sub("vic", "161", x, ignore.case = TRUE) 
  x <- sub("sa", "159", x, ignore.case = TRUE)
  return(x)
}