使用函数删除数据框中的列

时间:2016-07-19 17:01:26

标签: r

在我看来,我对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)

有人可以向我解释一下吗?

2 个答案:

答案 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