R 반짝이는 "이항 연산자에 대한 숫자가 아닌 인수"오류

wickmanb22

플레이어의 이름과 통계를 입력 한 다음 해당 통계에 대해 플레이어가 속한 백분위 수를 반환하는 간단한 Shiny 앱을 만들고 있습니다. 현재 '통계'위젯으로 인해 오류가 발생하는 문제가 발생했습니다 (제목 참조).

사용중인 패키지와 데이터 샘플은 다음과 같습니다.

library(shiny)
library(dplyr)
library(mosaic)

player <- c("John", "Mike", "Devon", "Greg", "Bruce", "Zachary", "Jack", "Graham", "Jordan", "Sandy")
team <- c("A", "B", "A", "B", "A", "B", "A", "B", "A", "B")
wins <- c(1:10)
losses <- c(10:1)

sampledata <- data.frame(player, team, wins, losses)

앱에는 (1) 플레이어 이름 입력, (2) 통계 선택, (3) 선택 실행의 세 가지 위젯이 있습니다.
출력은 한 줄의 텍스트입니다.
여기 있습니다ui.r:

ui <- fluidPage(
  titlePanel("Percentile Generator"),
    sidebarLayout(
        sidebarPanel(
            textInput("playerfind",
                      "Player:",
                      value = "Devon"),
            selectInput("stat1", "Select Statistic:",
                        choices = list("wins", "losses", "ties"),
                        selected = "wins"),
            actionButton("action", label = "Generate Percentile!")
    ),
        mainPanel(
           textOutput("percentmachine")
        ))
    )

서버는 조금 더 복잡합니다. 1 단계 sample data는 입력을 기반으로 1x3 데이터 프레임을 필터링 하고 생성합니다. 2 단계는 매트릭스에서 필요한 값을 가져와 저장합니다. 마지막으로 3 단계는 2 단계의 입력을 받아 백분위 수를 생성합니다.

server <- function(input, output) {
    step1 <- reactive({sampledata %>%
        transmute(player, stat = zscore(input$stat1)) %>%
        filter(player == input$playerfind)})

    step2 <- reactive({step1()[1,2]})

    step3 <- reactive({round(pnorm(step2())*100, digits = 1)})

    output$percentmachine <- renderText ({
        input$action
        isolate(paste(input$playerfind, 
                      "had more",
                      input$stat1,
                      "than",
                      step3(),
                      "percent of players."))})
}

이 오류는 input$stat11 단계 에서 발생했다고 생각합니다. 이 입력을 '승리'와 같은 특정 통계로 대체하면 통계를 변경할 수 없지만 반짝이는 앱이 정상적으로 실행됩니다. 나는 이것으로 꽤 오랫동안 어려움을 겪어 왔기 때문에 여기서 물어볼 것이라고 생각했습니다.

미리 감사드립니다! xD

r2evans

당신은 먹이 character받는 함수에 값을 numeric.

반짝이는 / 반응하는 환경 밖에서 시뮬레이션하겠습니다.

input <- list(playerfind="Devon", stat1="wins")
# I don't have mosaic installed
zscore <- function( x, na.rm=getOption("na.rm", FALSE) ) ( x - mean(x, na.rm=na.rm)) / sd(x, na.rm=na.rm)
sampledata %>%
  transmute(player, stat = zscore(input$stat1))
# Warning in mean.default(x, na.rm = na.rm) :
#   argument is not numeric or logical: returning NA
# Error in x - mean(x, na.rm = na.rm) (from #1) : 
#   non-numeric argument to binary operator

다음을 사용하여 트릭으로이 문제를 해결할 수 있습니다 get.

sampledata %>%
  transmute(player, stat = zscore(get(input$stat1)))
#     player       stat
# 1     John -1.4863011
# 2     Mike -1.1560120
# 3    Devon -0.8257228
# 4     Greg -0.4954337
# 5    Bruce -0.1651446
# 6  Zachary  0.1651446
# 7     Jack  0.4954337
# 8   Graham  0.8257228
# 9   Jordan  1.1560120
# 10   Sandy  1.4863011

### which is effectively this
zscore(sampledata$wins)
#  [1] -1.4863011 -1.1560120 -0.8257228 -0.4954337 -0.1651446  0.1651446
#  [7]  0.4954337  0.8257228  1.1560120  1.4863011

(그리고 filter필요에 따라).

이 문제를 해결하는 또 다른 방법은 과잉 일 수도 있지만 프로젝트의 다른 작업에 대한 통찰력을 제공하는 경우 데이터를 전체에서 긴 것으로 재구성 할 수 있습니다. 이미를 사용하고 있으므로 dplyr다음을 포함하겠습니다 tidyr.

library(tidyr)

### this is just a demo of reshaping from wide to long
sampledata %>%
  pivot_longer(c(-player, -team), names_to = "winlose", values_to = "val")
# # A tibble: 20 x 4
#    player  team  winlose   val
#    <fct>   <fct> <chr>   <int>
#  1 John    A     wins        1
#  2 John    A     losses     10
#  3 Mike    B     wins        2
#  4 Mike    B     losses      9
#  5 Devon   A     wins        3
#  6 Devon   A     losses      8
#  7 Greg    B     wins        4
#  8 Greg    B     losses      7
#  9 Bruce   A     wins        5
# 10 Bruce   A     losses      6
# 11 Zachary B     wins        6
# 12 Zachary B     losses      5
# 13 Jack    A     wins        7
# 14 Jack    A     losses      4
# 15 Graham  B     wins        8
# 16 Graham  B     losses      3
# 17 Jordan  A     wins        9
# 18 Jordan  A     losses      2
# 19 Sandy   B     wins       10
# 20 Sandy   B     losses      1


### this is the actual work
sampledata %>%
  pivot_longer(c(-player, -team), names_to = "winlose", values_to = "val") %>%
  filter(winlose == input$stat1) %>%
  mutate(z = zscore(val))
# # A tibble: 10 x 5
#    player  team  winlose   val      z
#    <fct>   <fct> <chr>   <int>  <dbl>
#  1 John    A     wins        1 -1.49 
#  2 Mike    B     wins        2 -1.16 
#  3 Devon   A     wins        3 -0.826
#  4 Greg    B     wins        4 -0.495
#  5 Bruce   A     wins        5 -0.165
#  6 Zachary B     wins        6  0.165
#  7 Jack    A     wins        7  0.495
#  8 Graham  B     wins        8  0.826
#  9 Jordan  A     wins        9  1.16 
# 10 Sandy   B     wins       10  1.49 

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

R-반짝이는 "이항 연산자에 대한 숫자가 아닌 인수"오류

분류에서Dev

오류의 원인은 무엇입니까? R의 이항 연산자에 대한 숫자가 아닌 인수

분류에서Dev

R의 함수 오류, 이항 연산자에 대한 숫자가 아닌 인수

분류에서Dev

-0.01 오류 * 높이 : 이항 연산자에 대한 숫자가 아닌 인수

분류에서Dev

R-Shiny Package-이항 연산자에 대한 숫자가 아닌 인수

분류에서Dev

R의 이항 연산자에 대한 숫자가 아닌 인수

분류에서Dev

에지를 추가하는 동안 R iGraph 오류 "이항 연산자에 대한 숫자가 아닌 인수"오류

분류에서Dev

ggplot의 문으로 인해 R에서 오류가 발생하면 이항 연산자에 대한 숫자가 아닌 인수

분류에서Dev

drc 오류 "parmVec [3] 오류-respl : 이항 연산자에 대한 숫자가 아닌 인수"

분류에서Dev

ggplot : geom_errorbar : "var"오류-se : 이항 연산자에 대한 숫자가 아닌 인수

분류에서Dev

R caret : qrf를 사용하는 기차에서 "이항 연산자에 대한 숫자가 아닌 인수"

분류에서Dev

R-빛나는 행렬의 이항 연산자에 대한 숫자가 아닌 인수

분류에서Dev

2 열마다 산점도를 플로팅하고 오류를 충족시킵니다. 오류 : 이항 연산자에 대한 숫자가 아닌 인수

분류에서Dev

ompr MILPModel : 이항 연산자에 대한 숫자가 아닌 인수

분류에서Dev

ggplot의 이항 연산자에 대한 숫자가 아닌 인수

분류에서Dev

"(1-h) * qs [i] 오류 : 이항 연산자에 대한 숫자가 아닌 인수"코드를 실행하려고 할 때마다 계속 팝업됩니다.

분류에서Dev

두 요소가 모두 숫자 인 경우 이항 연산자에 대한 숫자가 아닌 인수

분류에서Dev

ggplot의 R 반짝이는 오류

분류에서Dev

R 반짝 이는 라디오 버튼

분류에서Dev

R 반짝이는 오류 : "쉘"기능을 찾을 수 없습니다.

분류에서Dev

R 팝 오버 / 툴팁이있는 반짝이는 valueBox

분류에서Dev

"서버 오류 : 사용되지 않은 인수"-R 반짝이는 앱 오류 (서버 함수에 조건문이 포함됨)

분류에서Dev

반응 열과 팝 오버 툴팁이있는 R 반짝이는 데이터 테이블

분류에서Dev

R 반짝이는 전단지 오류 : addMarkers가 반응 함수에서 포인트 데이터를받지 못함

분류에서Dev

플롯에 반응을 사용할 때 R 반짝 오류

분류에서Dev

r 반짝이는 호출 CSS 파일

분류에서Dev

insertUI의 R 반짝이는 동적 UI

분류에서Dev

R의 반짝이는 앱 내의 tabpanel

분류에서Dev

R 반짝이는 ggplot 브러시

Related 관련 기사

  1. 1

    R-반짝이는 "이항 연산자에 대한 숫자가 아닌 인수"오류

  2. 2

    오류의 원인은 무엇입니까? R의 이항 연산자에 대한 숫자가 아닌 인수

  3. 3

    R의 함수 오류, 이항 연산자에 대한 숫자가 아닌 인수

  4. 4

    -0.01 오류 * 높이 : 이항 연산자에 대한 숫자가 아닌 인수

  5. 5

    R-Shiny Package-이항 연산자에 대한 숫자가 아닌 인수

  6. 6

    R의 이항 연산자에 대한 숫자가 아닌 인수

  7. 7

    에지를 추가하는 동안 R iGraph 오류 "이항 연산자에 대한 숫자가 아닌 인수"오류

  8. 8

    ggplot의 문으로 인해 R에서 오류가 발생하면 이항 연산자에 대한 숫자가 아닌 인수

  9. 9

    drc 오류 "parmVec [3] 오류-respl : 이항 연산자에 대한 숫자가 아닌 인수"

  10. 10

    ggplot : geom_errorbar : "var"오류-se : 이항 연산자에 대한 숫자가 아닌 인수

  11. 11

    R caret : qrf를 사용하는 기차에서 "이항 연산자에 대한 숫자가 아닌 인수"

  12. 12

    R-빛나는 행렬의 이항 연산자에 대한 숫자가 아닌 인수

  13. 13

    2 열마다 산점도를 플로팅하고 오류를 충족시킵니다. 오류 : 이항 연산자에 대한 숫자가 아닌 인수

  14. 14

    ompr MILPModel : 이항 연산자에 대한 숫자가 아닌 인수

  15. 15

    ggplot의 이항 연산자에 대한 숫자가 아닌 인수

  16. 16

    "(1-h) * qs [i] 오류 : 이항 연산자에 대한 숫자가 아닌 인수"코드를 실행하려고 할 때마다 계속 팝업됩니다.

  17. 17

    두 요소가 모두 숫자 인 경우 이항 연산자에 대한 숫자가 아닌 인수

  18. 18

    ggplot의 R 반짝이는 오류

  19. 19

    R 반짝 이는 라디오 버튼

  20. 20

    R 반짝이는 오류 : "쉘"기능을 찾을 수 없습니다.

  21. 21

    R 팝 오버 / 툴팁이있는 반짝이는 valueBox

  22. 22

    "서버 오류 : 사용되지 않은 인수"-R 반짝이는 앱 오류 (서버 함수에 조건문이 포함됨)

  23. 23

    반응 열과 팝 오버 툴팁이있는 R 반짝이는 데이터 테이블

  24. 24

    R 반짝이는 전단지 오류 : addMarkers가 반응 함수에서 포인트 데이터를받지 못함

  25. 25

    플롯에 반응을 사용할 때 R 반짝 오류

  26. 26

    r 반짝이는 호출 CSS 파일

  27. 27

    insertUI의 R 반짝이는 동적 UI

  28. 28

    R의 반짝이는 앱 내의 tabpanel

  29. 29

    R 반짝이는 ggplot 브러시

뜨겁다태그

보관