rm抛出错误

时间:2015-08-28 08:14:38

标签: r dataframe rm

我试图用rm删除df(数据帧),但它给了我一个错误

rm(df)
Error in .rs.toDataFrame(obj, objName, TRUE) : 
names() applied to a non-vector

rm(list=as.list(df))
Error in rm(list = as.list(df)) : invalid first argument

rm(list=get('df'))
Error in rm(list = get("df")) : invalid first argument

我知道如何删除对象和列,但是有效的方法可以删除R中的完整数据框。

dupt(df)    

structure(list(Date = c("2015-08-25", "2015-08-26", "2015-08-27"
), `8552` = c(955, 2631, 2131), `8561` = c(1432, 3406, 2366)), .Names = c("Date", 
"8552", "8561"), row.names = c(NA, -3L), class = "data.frame")

感谢。

被修改

以下是一些观察

df=df1
> df1
        Date 8552 8561
1 2015-08-25  955 1432
2 2015-08-26 2631 3406
3 2015-08-27 2131 2366
> df
        Date 8552 8561
1 2015-08-25  955 1432
2 2015-08-26 2631 3406
3 2015-08-27 2131 2366
> rm("df")
Error in .rs.toDataFrame(obj, objName, TRUE) : 
  names() applied to a non-vector   

 > df
function (x, df1, df2, ncp, log = FALSE) 
{
    if (missing(ncp)) 
        .External(C_df, x, df1, df2, log)
    else .External(C_dnf, x, df1, df2, ncp, log)
}
<bytecode: 0x7e43270>
<environment: namespace:stats>

EDIT2

> df=1
> df
[1] 1
> rm(df)
Error in .rs.toDataFrame(obj, objName, TRUE) : 
  names() applied to a non-vector

我删除了df,然后尝试了这个

>df
function (x, df1, df2, ncp, log = FALSE) 
{
    if (missing(ncp)) 
        .External(C_df, x, df1, df2, log)
    else .External(C_dnf, x, df1, df2, ncp, log)
}
<bytecode: 0x4eb48f0>
<environment: namespace:stats>
> rm(df)
Warning message:
In rm(df) : object 'df' not found

似乎与数据框架无关。只是在删除df之前就像对象一样,但是只要我rm它,它就会抛出一个错误,但rm也不会将df视为一个函数。这背后的任何原因异常行为。

1 个答案:

答案 0 :(得分:1)

您描述的行为并非异常。在R中,df()是一个(很少使用)函数,可以产生所谓的F分布(参见?df)。

如果您定义数据框并将其命名为df,则此变量名称将用于存储数据框,您可以通过在控制台中键入df来查看其内容。但是,如果您在使用df(成功)删除数据框后在控制台中键入rm(df),则会获得内置函数df的说明;类似于您在没有参数的情况下输入任何其他函数名称所得到的结果,例如ls而不是ls()

如果使用未被内置函数占用的变量名,则结果与预期一致。

以下是一个例子:

> my_df <- data.frame(c(1:3))
> my_df
  c.1.3.
1      1
2      2
3      3
> rm(my_df)
> my_df
Error: object 'my_df' not found