R 让它成为一个函数

R 让它成为一个函数,r,function,R,Function,在SO的帮助下,我现在有了一种重命名数据帧中所有变量的方法,除了选定的子集。我目前正在使用,请参阅blow(感谢) 我想写一个函数,在这里我可以定义1)我的数据,2)变量的向量,3)我想给函数中未选择的变量添加什么前缀(见下面我的尝试)。我错误地认为这很容易,但我很难让函数正常工作 下面是我编写函数的尝试,显然不起作用。此外,如果有人推荐一个网站或一些文本,我可以阅读,以更好地理解如何编写函数 baRadd <- function(df, vector, suffix){names(df)

在SO的帮助下,我现在有了一种重命名数据帧中所有变量的方法,除了选定的子集。我目前正在使用,请参阅blow(感谢)

我想写一个函数,在这里我可以定义1)我的数据,2)变量的向量,3)我想给函数中未选择的变量添加什么前缀(见下面我的尝试)。我错误地认为这很容易,但我很难让函数正常工作

下面是我编写函数的尝试,显然不起作用。此外,如果有人推荐一个网站或一些文本,我可以阅读,以更好地理解如何编写函数

baRadd <- function(df, vector, suffix){names(df) <- 
                   ifelse(names(df) %in% vector,names(df), 
                   paste(suffix, names(df), sep = ".")) }

data(mtcars)
temp.mtcars <- mtcars
baRadd(temp.mtcars, c("mpg", "cyl", "disp"), "baR")  

baRadd主要问题是函数不返回任何值。它只是修改data.frame
df
,(这是评估环境的本地部分),然后退出

要使其返回修改过的对象,请执行以下操作:

data(mtcars)
mtcars1 <- mtcars

baRadd <- function(df, vector, suffix){ 
                   names(df) <- ifelse(names(df) %in% vector,names(df), 
                                      paste(suffix, names(df), sep = ".")) 
                   return(df)}

mtcars1 <- baRadd(mtcars1, c("mpg", "cyl", "disp"), "baR") 
数据(mtcars)

mtcars1主要问题是函数不返回任何值。它只是修改data.frame
df
,(这是评估环境的本地部分),然后退出

要使其返回修改过的对象,请执行以下操作:

data(mtcars)
mtcars1 <- mtcars

baRadd <- function(df, vector, suffix){ 
                   names(df) <- ifelse(names(df) %in% vector,names(df), 
                                      paste(suffix, names(df), sep = ".")) 
                   return(df)}

mtcars1 <- baRadd(mtcars1, c("mpg", "cyl", "disp"), "baR") 
数据(mtcars)

mtcars1谢谢,我想我从来没有弄明白
return()
。谢谢当然实际上,您不需要
return()
。如果缺少,函数将返回其最后一行的值。因此,在上面的第二个示例中,您也可以:(a)将最后一行更改为
newnames
;或者(b)删除最后一行,以及对
newnames
的赋值(也就是说,这一位:
newnames谢谢,我想我从来没有计算出
return()
。谢谢!当然。你实际上不需要
return()
。如果缺少,函数将返回其最后一行的值。因此,在上面的第二个示例中,您也可以:(a)将最后一行更改为
newnames
;或(b)删除最后一行,并将赋值指定给
newnames
(即此位:
newnames
mtcars2 <- mtcars
baRadd2 <- function(df, vector, suffix){ 
                    newnames <- ifelse(names(df) %in% vector,names(df), 
                                       paste(suffix, names(df), sep = ".")) 
                    return(newnames)}

names(mtcars2) <- baRadd2(mtcars2, c("mpg", "cyl", "disp"), "baR")