함수를 호출하면 오류가 발생합니다 / 수동으로 줄을 실행하면

펠리페 보르 디니 두 아마 랄

좋아, 내 문제를 설명하는 적절한 방법을 찾기 위해 약간 고심하고 있습니다. 멍청한 질문이라면 미안하지만 아직 배우는 중입니다.

정기적으로 "CountX_YYYY"라는 이름의 일련의 작은 data.frame이 있습니다 (X는 특정 경우를, YYYY는 주어진 연도를 나타냄). 다음과 같이 특정 유형 (X)을 가져 와서 모두 바인딩하고 ID (연도)를 정리하여 시작하는 함수를 작성했습니다.

library(dplyr)

analysis <- function(case_pattern){

  cases <- mget(ls(pattern = case_pattern)) %>%
    bind_rows(.id = "id") %>%
    rename(year = id) %>%
    mutate(year = str_sub(year,-4))

  return(cases)
}

어디에 case_pattern사용되며, 예를 들어,"^Count1"

매우 간단한 코드이며 아래 에서처럼 함수 본문을 수동으로 실행하면 정상적으로 작동합니다.

case_pattern <- "^Count1"

cases <- mget(ls(pattern = case_pattern)) %>%
    bind_rows(.id = "id") %>%
    rename(year = id) %>%
    mutate(year = str_sub(year,-4))

그러나 함수를 호출하여 똑같은 작업을 수행하면 :

case_pattern <- "^Count1"
analysis(case_pattern)

다음 오류가 발생합니다.

Error: This tidyselect interface doesn't support predicates yet.
i Contact the package author and suggest using `eval_select()`.

(아래, 역 추적, 도움이되는지 모르겠습니다)

29.
stop(fallback) 
28.
signal_abort(cnd) 
27.
abort(c("This tidyselect interface doesn't support predicates yet.", 
    i = "Contact the package author and suggest using `eval_select()`.")) 
26.
as_indices_sel_impl(out, vars = vars, strict = strict, data) 
25.
walk_data_tree(new, data_mask, context_mask) 
24.
reduce_sels(node, data_mask, context_mask, init = init) 
23.
eval_c(expr, data_mask, context_mask) 
22.
walk_data_tree(expr, data_mask, context_mask) 
21.
vars_select_eval(vars, expr, strict, data = x, name_spec = name_spec, 
    uniquely_named = uniquely_named, type = type) 
20.
withCallingHandlers(expr, simpleError = function(cnd) {
    abort(conditionMessage(cnd), parent = cnd)
}) 
19.
instrument_base_errors(expr) 
18.
doTryCatch(return(expr), name, parentenv, handler) 
17.
tryCatchOne(expr, names, parentenv, handlers[[1L]]) 
16.
tryCatchList(expr, classes, parentenv, handlers) 
15.
tryCatch(instrument_base_errors(expr), vctrs_error_subscript = function(cnd) {
    cnd$subscript_action <- subscript_action(type)
    cnd$subscript_elt <- "column"
    cnd_signal(cnd) ... 
14.
with_subscript_errors(vars_select_eval(vars, expr, strict, data = x, 
    name_spec = name_spec, uniquely_named = uniquely_named, type = type), 
    type = type) 
13.
eval_select_impl(x, names, {
    {
        sel
    } ... 
12.
rename_impl(NULL, .vars, quo(c(...)), strict = .strict) 
11.
tidyselect::vars_rename(names(.data), !!!enquos(...)) 
10.
rename.data.frame(., year = id) 
9.
rename(., year = id) 
8.
function_list[[i]](value) 
7.
freduce(value, `_function_list`) 
6.
`_fseq`(`_lhs`) 
5.
eval(quote(`_fseq`(`_lhs`)), env, env) 
4.
eval(quote(`_fseq`(`_lhs`)), env, env) 
3.
withVisible(eval(quote(`_fseq`(`_lhs`)), env, env)) 
2.
mget(ls(pattern = case_pattern)) %>% bind_rows(.id = "id") %>% 
    rename(year = id) %>% mutate(year = str_sub(year, -4))
1.
analysis(case_pattern)

이 오류를 식별 / 이해할 수 없었지만 두 가지 방법 모두 동일한 출력을 제공해야하는 것 같습니다. 그렇지 않습니까?

어쨌든 미리 감사드립니다!

Akrun

문제는에 따른 것으로 보인다 envirlsmget있기 때문에 mget그 기능 ENV 내부의 개체를 찾고있는 함수 내에서

library(dplyr)
analysis <- function(case_pattern) {
    mget(ls(pattern = case_pattern)) %>%
    bind_rows(.id = 'id')
   }
Count1 <- head(mtcars)
Count2 <- head(mtcars)
analysis("^Count\\d+$")
#data frame with 0 columns and 0 rows

envirto를 지정할 수 있으며 .GlobalEnv작동해야합니다.

analysis <- function(case_pattern) {
   mget(ls(pattern = case_pattern, envir = .GlobalEnv), envir = .GlobalEnv)  %>% 
        bind_rows(.id = 'id')
}
analysis("^Count\\d+$")
#                            id  mpg cyl disp  hp drat    wt  qsec vs am gear carb
#Mazda RX4...1          Count1 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag...2      Count1 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#Datsun 710...3         Count1 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#Hornet 4 Drive...4     Count1 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
#Hornet Sportabout...5  Count1 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
# ...

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

VBA 함수는 매크로로 실행되지만 함수로 호출하면 오류가 발생합니다.

분류에서Dev

Raku에서 NativeCall을 통해 GSL 함수를 호출하면 오류가 발생합니다.

분류에서Dev

dll에서 함수를 호출하면 오류가 발생합니다.

분류에서Dev

심포니 양식을 수동으로 제출하면 CSRF 오류가 발생합니다.

분류에서Dev

게임을 Linux로 이식하려고하면 XInitThreads를 호출하면 구문 오류가 발생합니다.

분류에서Dev

함수 내에서 stop ()을 호출하면 R CMD Check에서 오류가 발생합니다.

분류에서Dev

함수 내에서 stop ()을 호출하면 R CMD Check에서 오류가 발생합니다.

분류에서Dev

동일한 헤더 이름으로 JSON 구문 분석을 수행하면 오류가 발생합니다.

분류에서Dev

eval '$ cmd'로 변수를 실행하면 오류가 발생합니다.

분류에서Dev

Sanic 함수에서 호출하면 "실행중인 이벤트 루프에서 asyncio.run ()을 호출 할 수 없습니다."가 발생합니다.

분류에서Dev

AGGREGATE 함수를 사용하여 배열에서 최대 값을 추출하면 오류가 발생합니다.

분류에서Dev

동일한 함수를 두 번 호출하면 클래스에서 오류가 발생합니다.

분류에서Dev

다른 함수에서 Phaser.Group.create ()를 호출하려고하면 오류가 발생합니다.

분류에서Dev

명령 줄에서`mongo`를 실행하면 오류가 발생합니다.

분류에서Dev

NASM으로 작성된 Win32 앱을 실행하면 '이 앱은 PC에서 실행할 수 없습니다'오류가 발생합니다.

분류에서Dev

udf 함수로 DataFrame 필드에서 줄 바꿈을 제거하면 TypeTag 오류가 발생합니다.

분류에서Dev

코드 블록을 함수로 변환하면 오류가 발생합니다.

분류에서Dev

Eclipse를 통해 cuda 프로그램을 실행하면 오류가 발생합니다.

분류에서Dev

리플렉션을 사용하여 함수를 동적으로 호출하면 오류가 발생합니다. 비 정적 메서드에는 대상이 필요합니다.

분류에서Dev

WCF-await 키로 함수를 호출하면 예외가 발생합니다.

분류에서Dev

"문자열을 부동 소수점으로 변환 할 수 없음"오류가 발생하면서 두 행의 데이터를 플롯하려고합니다.

분류에서Dev

가변 템플릿 함수를 호출하면 Visual Studio 2015에서 오류 C2660이 발생합니다.

분류에서Dev

콜백 내에서 함수를 호출하면 Angular에서 오류가 발생합니다.

분류에서Dev

DietPi-스크립트를 수동으로 실행하면 작동하지만 postboot.d에서 시작하면 I / O 오류가 발생합니다.

분류에서Dev

crontab을 통해 NodeJS를 실행하면 오류가 발생합니다.

분류에서Dev

Android Studio에서 처음으로 자동 생성 된 코드를 실행하면 오류가 발생합니다.

분류에서Dev

YOLACT로 train.py를 실행하면 KeyError : 0 오류가 발생합니다.

분류에서Dev

저장 프로 시저를 실행하면 오류가 발생합니다.

분류에서Dev

저장 프로 시저를 실행하면 오류가 발생합니다.

Related 관련 기사

  1. 1

    VBA 함수는 매크로로 실행되지만 함수로 호출하면 오류가 발생합니다.

  2. 2

    Raku에서 NativeCall을 통해 GSL 함수를 호출하면 오류가 발생합니다.

  3. 3

    dll에서 함수를 호출하면 오류가 발생합니다.

  4. 4

    심포니 양식을 수동으로 제출하면 CSRF 오류가 발생합니다.

  5. 5

    게임을 Linux로 이식하려고하면 XInitThreads를 호출하면 구문 오류가 발생합니다.

  6. 6

    함수 내에서 stop ()을 호출하면 R CMD Check에서 오류가 발생합니다.

  7. 7

    함수 내에서 stop ()을 호출하면 R CMD Check에서 오류가 발생합니다.

  8. 8

    동일한 헤더 이름으로 JSON 구문 분석을 수행하면 오류가 발생합니다.

  9. 9

    eval '$ cmd'로 변수를 실행하면 오류가 발생합니다.

  10. 10

    Sanic 함수에서 호출하면 "실행중인 이벤트 루프에서 asyncio.run ()을 호출 할 수 없습니다."가 발생합니다.

  11. 11

    AGGREGATE 함수를 사용하여 배열에서 최대 값을 추출하면 오류가 발생합니다.

  12. 12

    동일한 함수를 두 번 호출하면 클래스에서 오류가 발생합니다.

  13. 13

    다른 함수에서 Phaser.Group.create ()를 호출하려고하면 오류가 발생합니다.

  14. 14

    명령 줄에서`mongo`를 실행하면 오류가 발생합니다.

  15. 15

    NASM으로 작성된 Win32 앱을 실행하면 '이 앱은 PC에서 실행할 수 없습니다'오류가 발생합니다.

  16. 16

    udf 함수로 DataFrame 필드에서 줄 바꿈을 제거하면 TypeTag 오류가 발생합니다.

  17. 17

    코드 블록을 함수로 변환하면 오류가 발생합니다.

  18. 18

    Eclipse를 통해 cuda 프로그램을 실행하면 오류가 발생합니다.

  19. 19

    리플렉션을 사용하여 함수를 동적으로 호출하면 오류가 발생합니다. 비 정적 메서드에는 대상이 필요합니다.

  20. 20

    WCF-await 키로 함수를 호출하면 예외가 발생합니다.

  21. 21

    "문자열을 부동 소수점으로 변환 할 수 없음"오류가 발생하면서 두 행의 데이터를 플롯하려고합니다.

  22. 22

    가변 템플릿 함수를 호출하면 Visual Studio 2015에서 오류 C2660이 발생합니다.

  23. 23

    콜백 내에서 함수를 호출하면 Angular에서 오류가 발생합니다.

  24. 24

    DietPi-스크립트를 수동으로 실행하면 작동하지만 postboot.d에서 시작하면 I / O 오류가 발생합니다.

  25. 25

    crontab을 통해 NodeJS를 실행하면 오류가 발생합니다.

  26. 26

    Android Studio에서 처음으로 자동 생성 된 코드를 실행하면 오류가 발생합니다.

  27. 27

    YOLACT로 train.py를 실행하면 KeyError : 0 오류가 발생합니다.

  28. 28

    저장 프로 시저를 실행하면 오류가 발생합니다.

  29. 29

    저장 프로 시저를 실행하면 오류가 발생합니다.

뜨겁다태그

보관