2017-12-23 15 views
0

나는 다양한 생물 종이있는 데이터 프레임을 가지고 있으며, 그 존재도가 어떤 매개 변수와 관련되어 있는지보고 싶습니다.R의 선형 모델을 가진 purrr : 'character'타입의 'envir'인수가 올바르지 않음

가 나는, 나는 다음과 같은 오류 메시지가 무엇입니까 놀랍게도

# Load in the dune data set and tidyverse 
library(vegan) 
data(dune) 
data(dune.env) 
library(tidyverse) 

# Reshape the species matrix into long form data 
duneM <- dune %>% rownames_to_column('Site') %>% gather(Species, Count, -Site) 

# Join the species and environmental data 
duneE <- dune.env %>% rownames_to_column('Site') 
duneJ <- left_join(duneM, duneE, by = 'Site') 

# Basic linear model, that compares species counts to moisture data 
my_lm <- function(df){ 
    lm(Count ~ Moisture, data = df) 
} 

# Group the data by species and apply the function to each one 
duneJ %>% group_by('Species') %>% map(my_lm) 

같은 것을 할 수있을한다고 생각합니다. 평가에서

오류 (predvars, 데이터, ENV) :

  1. duneJ %> % GROUP_BY ("종") %> %지도 : 유형 '문자'역 추적의 무효 'envir'인수 (my_lm)
  2. withVisible (평가 (따옴표 (`_fseq` (`_lhs`)), ENV, ENV))
  3. 평가 (따옴표 (`_fseq` (`_lhs`)), ENV, ENV)
  4. eval (quote (`_fseq` (`_lhs`)), env, env)
  5. ` _fseq` (`_lhs`)
  6. freduce (값 '_function_list`)
  7. withVisible (function_list [K])
  8. function_list [K]
  9. 맵 (., my_lm)
  10. .F (.x와 [I] ...)
  11. LM (COUNT ~ 파일
  12. 평가 (MF, parent.frame (라인 2에서의 수분의 데이터 = DF) #))
  13. 평가 (MF , parent.frame())
  14. stats :: model.fra 날 (화학식 개수 = ~ 수분 데이터 = 안양, drop.unused.levels = TRUE)
  15. model.frame.default (화학식 = ~ 수분의 데이터 = DF 카운트 = drop.unused.levels TRUE)
  16. eval (predvars, data, env)

분명히 여기에 뭔가가 빠져 있습니다. 누군가가 명확히 할 수 있을까요? 감사.

+0

데이터 프레임이 필요합니다. 'duneJ %> % group_by (종) %> 요약 해 봅니다. (lm = list (my_lm (.)))' –

+0

고마워. 그게 실제로 실행되는 동안, 나는 출력으로 무엇을 해야할지 모르겠다. 나는 계수와 p 값의 데이터 프레임을 얻기 위해'duneJ %> % group_by ('Species') %> % map (my_lm) %> % broom :: tidy'와 같은 것을 할 계획이었습니다. – ohnoplus

+0

지도의 요점은 데이터 프레임이 아닌 객체를 처리 할 수 ​​있다는 것이고 마지막 단계에서 map_df (broom :: tidy)와 같은 데이터 프레임을 추출 할 수 있다는 것입니다. – ohnoplus

답변

0

나는이 게시물 http://omaymas.github.io/Climate_Change_ExpAnalysis/과이 비디오 https://www.youtube.com/watch?v=rz3_FDVt9eg을 보는 데 도움을 주었는데, 가장 잘 어울리는 빗자루와 빗자루를 함께 사용하는 방법을 이해했습니다. G. Grothendeik이 지적했듯이, 모델이있는 열을 데이터 프레임에 추가 할 수 있습니다. 각 셀은 전체 모델입니다. 지도 기능이 작업을 수행하는 방법은 다음

duneJ %>% group_by(Species) %>% nest %>% mutate(Mod = map(data, my_lm0)) -> test 

이며, nest 각 종에 대한 데이터를 포함하는 각각의 데이터 프레임의 목록이며, 그것을 저장하는 열을 만드는 중요한 기능입니다 "데이터"라는 기본 열. 나는 map을 mutate funciton 내부에서 실행하여 각 셀이 새로운 모델 인 또 다른 열을 모델에 저장합니다.내가 모델 결과를보고 싶은 경우에

, 정말 같이 그들을,지도 및 빗자루 데이터 프레임의리스트로 결합 관련 데이터를 선택하고 unnest 수 있습니다

test %>% mutate(Glance = map(Mod, glance)) %>% select(Species, Glance) %>% unnest 

이 가져 저에 대해 완전히 설명하지는 않았지만, 궁극적으로 목표로 삼은 각 종에 대한 모델 결과가있는 새로운 데이터 프레임을 작성했습니다.