【问题标题】:Deleting rows by using a for loop + if statements使用 for 循环 + if 语句删除行
【发布时间】:2021-11-26 12:43:44
【问题描述】:

我有以下数据框:

caratteri <- c("a", "b", "c", "d")
numeri <- c(1, 1, 2, 2)
dataFrameMio <- data.frame(caratteri, numeri)

如何使用for循环和if语句删除numeri列值为2的行?

我需要这样做,因为在大数据框的情况下,我无法手动指定要删除的行。我是 R 的新手,也许没有循环也可以做到这一点。

【问题讨论】:

  • dataFrameDiGenna=subset(dataFrameMio,numeri!=2)?
  • 您可以使用result &lt;- subset(dataFrameMio, numeri != 2) 而不指定要删除的行。你使用循环吗?
  • 你的同一个问题怎么了,被删除了?请使用“编辑”而不是重新发布。
  • 你可以使用dplyr::filter,它避免使用循环library(dplyr) dataFrameMio %&gt;% filter(numeri != 2)
  • @Bernhard 谢谢,df 现在注意到了,当然还有df1[df1$numeri !=2, ]

标签: r dataframe for-loop if-statement


【解决方案1】:

如 cmets 所述,您确实不应该通过 for 循环执行此操作,但您可以:

caratteri <- c("a", "b", "c", "d")
numeri <- c(1, 1, 2, 2)
dataFrameMio <- data.frame(caratteri, numeri)

result <- list()
for(line in 1:nrow(dataFrameMio))
  if(dataFrameMio$numeri[line] != 2) 
    result <- rbind(result, dataFrameMio[line,])

print(result)

这很难阅读和发现错误,并且在较大的数据集上表现不佳。只需使用subset! 或方括号,如

dataFrameMio[dataFrameMio$numeri != 2,]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 2014-03-13
    相关资源
    最近更新 更多