我试图用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视为一个函数。这背后的任何原因异常行为。
答案 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