R-如何从多个数据范围内删除第一行



我有多个dataframes,并且想删除其中的第一行。

我尝试使用for for循环,但无法理解我在做错了什么

for (i in cities){
i <- i[-1, ]
}

我得到以下错误代码:

i [-1,]中的错误:尺寸数量不正确

如果我们假设工作区中的唯一对象是数据框架,则可能会成功:

cities <- objects() )
for (i in cities) { assign(i, get(i)[-1,])}

说明:

原始代码的两件事是错误的:

在评论中已经提到了一个。" DF"与df不同。您需要使用get将字符值转换为用于检索具有该名称的对象的" true" R名称。object()的结果只是字符值。在r中,"名称"是指"语言对象"。请参阅帮助页面:?mode。(关于隆起和柱面名称的潜在混乱,这些混乱始终是"角色" - 类。(它不像SAS,这是一种没有这种区别的宏观语言。

第二个错误是试图在<-的左侧替换i。即使您正在使用实际的R名称,也会失败。assign函数旨在处理然后转换为R名称的字符值。

说您获取环境中所有表的列表,然后调用该列表cities。您不能仅仅迭代cities的每个值并更改内容,因为在列表中它们只是字符。

这是您需要的:

for (i in cities){
 tmp <- get(i)    # load the actual table
 tmp <- tmp[-1, ] # remove first column
 assign(i, tmp)   # re-assign table to original table name
}

最新更新