데이터 프레임에서 R의 모든 반복 루프 결과를 저장하는 방법

클라우디아

샘플링 일당 하나의 무작위 측정을 선택하여 반복 측정의 부트스트랩을 위한 루프를 만들었습니다. 루프는 100번 실행되어야 합니다.

내 입력 데이터 프레임은 다음과 같습니다.

  date        spot treatment   site  N2O.units N2O.pv N2O.flux t.air
   <chr>      <int> <chr>       <chr> <chr>     <chr>     <dbl> <dbl>
 1 2019-06-21    31 min 5, bare LV    mg        **       0.0002  16.5
 2 2019-06-21    46 min 5, bare LV    mg        *        0       11.1
 3 2019-07-05    31 min 5, bare LV    mg        **       0.0001  17.2
 4 2019-07-05    36 min 5, bare LV    mg        **       0.0004  18.4
 5 2019-07-05    46 min 5, bare LV    mg        **       0.0001  17.2
 6 2019-07-19    26 min 5, bare LV    mg        ***      0       29.4
 7 2019-07-19    31 min 5, bare LV    mg        ***      0.0002  29.4
 8 2019-07-19    36 min 5, bare LV    mg        **       0.0002  19.9
 9 2019-08-02    26 min 5, bare LV    mg        **       0       26.9
10 2019-08-02    36 min 5, bare LV    mg        **       0.0001  33.9
# ... with 44 more rows

먼저 목록을 만들었습니다.

lst <- list()

그런 다음 루프를 실행했습니다(예제에서는 5회만 반복함).

for(i in 1:5)

 {
  LV %>%
    group_by(date) %>%
    sample_n(1) -> result
  print(result$N2O.flux)
  lst[i]<-result$N2O.flux
}

결과적으로이 출력은 실제로 완벽하고 내가 원했던 것입니다.

 [1]  2e-04  1e-04  2e-04  1e-04  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00
[14]  0e+00  0e+00  0e+00  0e+00  0e+00  1e-04  0e+00  0e+00 -1e-04  0e+00  0e+00  0e+00
 [1]  0e+00  1e-04  0e+00  0e+00  1e-04  0e+00  0e+00  0e+00  0e+00  1e-04  0e+00  0e+00  0e+00
[14] -2e-04  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00  1e-04  0e+00  0e+00
 [1]  0e+00  4e-04  2e-04  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00  1e-04  0e+00  0e+00  0e+00
[14]  0e+00  1e-04  0e+00  0e+00  0e+00  1e-04  0e+00  0e+00  0e+00 -1e-04  0e+00  0e+00
 [1]  2e-04  1e-04  0e+00  1e-04  1e-04  1e-04  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00
[14] -2e-04  0e+00  0e+00  0e+00  0e+00  1e-04  0e+00  0e+00 -1e-04  0e+00  0e+00  0e+00
 [1]  0e+00  1e-04  2e-04  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00
[14]  0e+00  1e-04  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00 -1e-04  0e+00  0e+00

그러나 내가 얻는 것은 마지막 값일뿐입니다.

 str(lst)
List of 5
 $ : num 0
 $ : num 0
 $ : num 2e-04
 $ : num 0
 $ : num 2e-04

.csv를 작성할 때 write.table(as.data.frame(lst),file="mylist2.csv", quote=F,sep=",",row.names=F)다음과 같이 보입니다(꽤 끔찍합니다).

X0 X0.1 X2e.04 X0.2 X2e04.1
0 0 2.00e-04 0 2.00e-04

그래서 제 질문은 다음과 같습니다.

  1. 실행당 모든 루프 결과를 목록에 저장하는 방법은 무엇입니까?
  2. 추가 처리를 위해 .csv의 식별자로 숫자 값을 사용하여 결과를 깔끔한 열에 인쇄할 수 있도록 다양한 루프 실행에 숫자를 할당하는 방법은 무엇입니까? 내 환상에서 출력은 다음과 같습니다.
1 2 4 5 ...등 100
0 0 2.00e-04 0 2.00e-04 ... -1e-04
2.00e-04 0 2.00e-04 0 2.00e-04 ... -1e-04
-1e-04 0 4 0 2.00e-04 ... -1e-04
0 2.00e-04 2.00e-04 0 -1e-04 ... -1e-04
-1e-04 0 2.00e-04 0 2.00e-04 ... -1e-04

등(25행)

제이.sf

당신은 아마도 경고를 눈치 챘을 것입니다

Warning message:
In lst[i] <- result$N2O.flux :
  number of items to replace is not a multiple of replacement length

lst[i] <- result$N2O.flux벡터, 즉 여러 요소가 있는 객체를 list 에 대한 하위 목록으로 추가하려고 한다고 말하면 됩니다 lst. 이러한 상황에서 할당된 개체는 경고에 명시된 첫 번째 요소로 정리됩니다.

따라서 list()벡터를 사용하여 할당할 단일 객체를 얻을 수 있습니다.

lst[i] <- list(result$N2O.flux)

또는 하위 목록에 액세스하고 다음과 같이 말하여 하위 목록에 요소를 추가합니다.

lst[[i]] <- result$N2O.flux

또는 행에 날짜가 있고 열에 그리는 행렬을 제공하는 다른 접근 방식을 시도할 수 있습니다.

set.seed(42)
res <- replicate(n=5, sapply(split(LV$N2O.flux, LV$date), sample, 1))
res
#             [,1]  [,2]  [,3]  [,4]  [,5]
# 2019-06-21 2e-04 0e+00 0e+00 2e-04 0e+00
# 2019-07-05 1e-04 4e-04 1e-04 1e-04 4e-04
# 2019-07-19 0e+00 2e-04 2e-04 2e-04 2e-04
# 2019-08-02 0e+00 0e+00 1e-04 1e-04 0e+00

write.csv(res, file='test.csv')

당신에게주는

여기에 이미지 설명 입력


데이터:

LV <- structure(list(date = c("2019-06-21", "2019-06-21", "2019-07-05", 
"2019-07-05", "2019-07-05", "2019-07-19", "2019-07-19", "2019-07-19", 
"2019-08-02", "2019-08-02"), spot = c(31L, 46L, 31L, 36L, 46L, 
26L, 31L, 36L, 26L, 36L), treatment = c("min 5, bare", "min 5, bare", 
"min 5, bare", "min 5, bare", "min 5, bare", "min 5, bare", "min 5, bare", 
"min 5, bare", "min 5, bare", "min 5, bare"), site = c("LV", 
"LV", "LV", "LV", "LV", "LV", "LV", "LV", "LV", "LV"), N2O.units = c("mg", 
"mg", "mg", "mg", "mg", "mg", "mg", "mg", "mg", "mg"), N2O.pv = c("**", 
"*", "**", "**", "**", "***", "***", "**", "**", "**"), N2O.flux = c(2e-04, 
0, 1e-04, 4e-04, 1e-04, 0, 2e-04, 2e-04, 0, 1e-04), t.air = c(16.5, 
11.1, 17.2, 18.4, 17.2, 29.4, 29.4, 19.9, 26.9, 33.9)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10"))

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

for 루프의 결과를 데이터 프레임에 저장하는 방법

데이터 프레임에 t.tests의 반복된 결과를 저장하는 R 루프

R의 그룹별로 데이터 프레임 열 내에서 반복적으로 마지막 관찰로 모든 이전 관찰을 나눈 다음 결과를 저장하는 방법

모든 루프의 결과를 csv에 저장하는 방법

함수를 고정된 횟수만큼 반복하고 모든 결과를 데이터 프레임으로 저장하는 방법이 있습니까?

프로세스를 반복하고 결과를 새 데이터 프레임 팬더에 저장하는 방법

데이터 프레임의 모든 열에 대해 for 루프를 실행하고 결과를 별도의 데이터 프레임 또는 행렬로 반환하는 방법

scanf 데이터의 모든 결과를 루프로 인쇄하는 방법

결과가 각 반복을 재설정 할 때 for 루프의 결과를 데이터 프레임에 추가하는 방법이 있습니까?

각 반복의 루프 출력을 데이터 프레임에 저장하는 방법

for 루프의 각 반복 결과를 Java의 배열에 저장하는 방법

R 데이터 프레임의 모든 셀에서 모든 문자를 변경하는 방법

Nodejs의 모든 루프 끝에 데이터를 반환하는 방법

모든 페이지를 반복하고 크롤러 테이블의 요소는 Python에서 데이터 프레임으로 저장됩니다.

R에서 다른 데이터 프레임의 각 ID에 대해 데이터 프레임의 모든 행을 복제하는 방법은 무엇입니까?

데이터 프레임에서 -1의 모든 인스턴스를 r에서 NA로 표시하는 방법

R의 데이터 프레임에서 중복 행을 결합하는 방법

for 루프를 사용하여 루프의 각 반복에서 새 데이터 프레임을 만드는 방법은 무엇입니까?

R에서 데이터 프레임을 반복하는 가장 좋은 방법

R에서 코드를 반복하지 않고 데이터를 데이터 프레임에 넣는 방법?

루프 결과를 데이터 프레임 R에 저장

r- boxtidwell의 결과를 데이터 프레임 / 매트릭스에 저장하는 방법

R에서 데이터 프레임의 길이를 반복하는 적절한 방법

R에서 여러 데이터 프레임의 열에 대해 함수를 반복하는 방법

파이썬의 데이터 프레임에서 for 루프의 결과를 얻는 방법

데이터 프레임에서 목록의 모든 요소를 검색하는 가장 효율적인 방법

R : 데이터 프레임에서 행을 복제 한 후 루프를 실행하는 방법

R : 데이터 프레임에서 모든 그룹의 최소 지수를 식별하는 방법

R의 모든 열에 대한 합계에 대한 기여도를 기반으로 데이터 프레임에서 열을 삭제하는 방법

TOP 리스트

뜨겁다태그

보관