【问题标题】:Change a number to NA in reactive dataframe在反应数据框中将数字更改为 NA
【发布时间】:2018-01-22 07:46:54
【问题描述】:

我需要在这个反应数据框中将某些数字更改为 NA,例如将所有 -1 更改为 NA 或所有负数,因此它们不会在 historgam 中绘制

pointsInBounds <- reactive({
  if (is.null(input$map_bounds))
    return(Data[TRUE,])

  bounds <- input$map_bounds
  latRng <- range(bounds$north, bounds$south)
  lngRng <- range(bounds$east, bounds$west)

  subset(Organisms(),
         lat >= latRng[1] & lat <= latRng[2] &
           lon >= lngRng[1] & lon <= lngRng[2])
})
     ##histogram
output$hist <- renderPlot({plot1<-
  # If no organisms are in view, don't plot
  if (nrow(pointsInBounds()) == 0)
    return()


hist(...)

【问题讨论】:

  • 您应该能够使用与通常在 R 中相同的程序:df[df &lt; 0] &lt;- 0
  • 我在使用comparison (3) is possible only for atomic and list types时收到此错误代码

标签: r dataframe shiny na


【解决方案1】:

您是否希望将此转换应用于数据框中的任何负数或特定列?

无论哪种方式,执行此操作的方法可能与您在反应式上下文之外执行的操作大致相同。例如,使用 dplyr 更改 lat 反应对象的 lat 列中的所有负数:

Organisms() %>%
  mutate(lat = ifelse(lat < 0, NA, lat))

ifelse(lat == -1, NA, lat))

当然,如果您想避免 dplyr 或更改所有列中的负数,我的具体解决方案毫无意义,但无论具体更改是什么,您都可以将其应用于Organisms,就像您将非响应式数据框,只需添加括号即可。

【讨论】:

  • 不是latlng 我想更改df 中的所有其他列。
  • 啊,好的。所以也许是这样的:mutate_at(vars(var1:var2, var3), ~ ifelse(. &lt; 0, ., NA))?替换您想要的 df 中的任何列
【解决方案2】:

我通过添加来修复它

 `pointsInBounds<-reactive({ 
  DataP<-data.frame(pointsInBounds2())
  colnames(DataP)<-c(colnames(Data))
  DataP[DataP==-1]<-NA
  return(DataP)
  })`

在第一个反应数据帧之后

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    相关资源
    最近更新 更多