0
내가 벡터화 작업을 사용하여 R에 데이터 테이블을 채우기 위해 노력하고
에서 벡터화 기능을 사용하여 데이터 테이블을 작성 :는 R
library(data.table)
x = 5
y = 3
Foo = data.table(Bar = 1:x)
Foo[,paste0("simulation",1:y) := Bar * rnorm(y,,Bar)]
내가 생각을 각 행에 대해, rnorm (Y ,, 바) 것 ay 길이 벡터 (행의 Bar를 표준 편차로 사용)를 만들고 그 행에 Bar 값을 곱한 다음 해당 열을 채 웁니다. 그러나, (다른 실험에서) 먼저 열을 내려가려고하는 것 같습니다. 이 동작을 변경하는 방법이 있습니까?
넣지 마십시오 벡터를 만들 수 있습니다. 대신에 다음과 같이 긴 형식으로 저장하십시오 :'Foo [,. (bar = rep (Bar, each = y), v = rnorm (y * .N,, rep (Bar, each = .N)))]]'또는' Foo [, rnorm (y ,, Bar), by = Bar]' – Frank
그래서 두 개의 열만 사용하고 Bar의 각 값에 대해 y 행을 만들 것을 제안합니다. 다시 원하는 형식으로 되돌릴 수있는 쉬운 방법이 있습니까 (y + 1 열, 막대의 각 값에 대해 하나의 행)? – Sinnombre
예,'res <- Foo [, rnorm (y ,, Bar), by = Bar]를 사용할 수 있습니다; dcast (res, Bar ~ rowid (Bar, prefix = "sim"))'. 그러나, 좀 더 관용적 인 res [, do_stuff, by = Bar]와 비교할 때, 분석하는 것이 훨씬 어렵다고 생각합니다. 와이드 포맷으로 퍼팅하는 것은 내 경험에 대한 분석보다는 탐색에 가장 유용합니다. – Frank