包含一些具有NaN值的数据框的列表。如何删除它们?

时间:2019-06-26 03:19:08

标签: r dataframe na

我想从包含单行的列表数据框中制作一个数据框。我试图将它们绑定在一起以删除NaN值,但只有在没有NaN值的情况下才能绑定!

我得到了什么

[[1]]
[1]          NaN 9.840158e+17

[[2]]
[1]          NaN 9.838244e+17

[[3]]
[1] 6.842105e-01 9.837743e+17

[[4]]
[1] 2.527174e+00 9.837643e+17

[[5]]
[1] 1.168269e+00 9.836988e+17

[[6]]
[1]         NaN 9.83663e+17

我想要什么:

[1]
      impact           id
6.842105e-01 9.837743e+17
2.527174e+00 9.837643e+17
1.168269e+00 9.836988e+17

我尝试过的事情:

bind_rows(data, .id = "id")

Error: Argument 1 must have names

再现问题:

list(c(NaN, 984015782521835008), c(NaN, 983824424532144000), 
c(0.684210526315789, 983774270886236032), c(2.52717391304348, 
983764328443796992), c(1.16826923076923, 983698762760704000
), c(NaN, 983662953894435968))

有关如何解决此问题的任何提示?

2 个答案:

答案 0 :(得分:1)

我们删除具有File "C:/Users/kanha/PycharmProjects/automatic_game/bot.py", line 25, in <module> imagegrab() File "C:/Users/kanha/PycharmProjects/automatic_game/bot.py", line 20, in imagegrab image = ImageGrab(box) TypeError: 'module' object is not callable 的{​​{1}}元素,然后删除list个元素

NaN

或者另一种选择是rbind元素,然后使用out <- do.call(rbind, lst1[!sapply(lst1, function(x) any(is.nan(x)))]) colnames(out) <- c("impact", "id") out # impact id #[1,] 0.6842105 9.837743e+17 #[2,] 2.5271739 9.837643e+17 #[3,] 1.1682692 9.836988e+17

rbind

或与na.omit

na.omit(do.call(rbind, lst1))

或使用Filter(来自do.call(rbind, Filter(function(x) !any(is.nan(x)), lst1))

discard

答案 1 :(得分:0)

要从数据框中删除NA时,可以使用函数

数据

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA))

na.omit(DF)

print (DF)
x  y
1  0
2 10

na.exclude(DF)

print(DF)
x  y
1  0
2 10