在我看来,我对R中的功能一无所知。 假设我们有一个简单的数据帧:
df <- data.frame(A = c(1, 2), B = c(3, 4))
可以使用以下方式删除列:
df$A <- NULL
我试图把它包装成功能,不可思议的是它不起作用:
delete_col <- function(df) {
df$A <- NULL
}
delete_col(df)
有人可以向我解释一下吗?
答案 0 :(得分:2)
这不起作用的原因是因为您实际上是从参数变量中删除一个列,该变量只是您传递给函数的实际数据帧的副本。如果要删除列“粘贴”,可以使用父作用域赋值运算符(<<-
):
delete_col <- function(df) {
df$A <<- NULL
}
delete_col(df)
通过使用<<-
而不是<-
,R将对父作用域中的数据框进行赋值,这是您调用该函数的时间,因此该函数将删除该列回报。
答案 1 :(得分:2)
delete_col <- function(df) {
df$A <- NULL
return(df)
}
delete_col(df)
这将给出您正在寻找的结果。如果要将更改保留为df,请使用df<-delete_col(df)
您的功能不输出任何内容。您的函数从df中删除列,但它从不输出结果数据帧。通过使用return(df)
,您可以输出要输出的函数df
。