【问题标题】:Deleting a row from a data set从数据集中删除一行
【发布时间】:2014-11-04 22:07:47
【问题描述】:

我正在尝试创建一个函数,用于从 R 中的数据集中删除 n 行。我要删除的行是数据集 my_data_settime 列中的最小值。

我现在有

delete_data <- function(n)
{
  k=1
  while(k <= n) 
  {
    my_data_set = my_data_set[-(which.min(my_data_set$time)),]
    k=k+1
  }
}  

当我手动输入这些行(不使用 while 循环)时,它可以完美运行,但我无法让循​​环正常工作。

我通过以下方式调用该函数:

delete_data(n = 2)

任何帮助表示赞赏!

谢谢

【问题讨论】:

    标签: r loops while-loop dataset


    【解决方案1】:

    试试:

    my_data_set[ ! my_data_set$time == min(my_data_set$time),  ]  
    

    或者,如果您正在使用 data.table 并希望使用 data.table 提供的更直接的语法:

    library(data.table)
    setDT( my_data_set ) 
    
    my_data_set[ ! time == min(time) ]
    

    然后查看R 的工作原理。 R 是一种矢量化语言,几乎可以实现您的意思,而无需求助于复杂的循环。

    【讨论】:

      【解决方案2】:

      也试试:

      my_data_set <- my_data_set[which(my_data_set$time > min(my_data_set$time)),]
      

      顺便说一句,which.min() 只会在有多个记录匹配最小值的情况下提取第一条记录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-25
        • 1970-01-01
        • 2015-10-15
        • 1970-01-01
        • 1970-01-01
        • 2018-12-19
        相关资源
        最近更新 更多