如何从多个数据框中删除第一行?

时间:2019-05-07 12:16:38

标签: r loops for-loop

我有多个数据框,想删除所有数据框的第一行。

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

for (i in cities){

i <- i[-1, ]

}

我收到以下错误代码:

  

i [-1,]中的错误:维数错误

2 个答案:

答案 0 :(得分:1)

假设您获得了环境中所有表的列表,然后将该列表称为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
}

答案 1 :(得分:1)

如果我们假设您的工作空间中唯一的对象是数据帧,那么这可能会成功:

{menuSideBar.map(menu => (
<Item
  className={this.state.lastClicked === menu.id ? 'active' : ''} 
  onClick={() => {
    this.setState({lastClicled: menu.id});
  }} 
  button
/>
))}

说明:

原始代码有两件事:

在评论中已经提到了一个。 “ df”与cities <- objects() ) for (i in cities) { assign(i, get(i)[-1,])} 不同。您需要使用df将字符值转换为用于检索具有该名称的对象的“ true” R名称。 get的结果只是一个字符值。在R中,术语“名称”是指“语言对象”。请参阅帮助页面:object()。 (行名称和列名称始终是“字符”类,这可能会造成混淆。)SAS不像SAS这样的宏语言,没有这种区别。

第二个错误是试图替换?mode左侧的i。即使使用实际的R名称,该操作也会失败。 <-函数旨在处理字符值,然后将这些字符值转换为R名称。