for 루프에서 변수 이름 목록을 생성 한 후 값을 지정하십시오. in 1:3) { noquote(paste(“a”,i,sep=””))=i } 위의

for 루프를 사용하여 변수 목록을 생성하고 그 값을 제공하는 간단한 방법이 있는지 궁금합니다.

for(i in 1:3)
{
  noquote(paste("a",i,sep=""))=i
}

위의 코드에서, 내가 만들려고 a1, a2, a3, 1, 2, 3. 그러나, R는 오류 메시지를 제공의 값으로하는 할당합니다. 당신의 도움을 주셔서 감사합니다.



답변

찾고 있습니다 assign().

for(i in 1:3){
  assign(paste("a", i, sep = ""), i)
}

준다

> ls()
[1] "a1"          "a2"          "a3" 

> a1
[1] 1
> a2
[1] 2
> a3
[1] 3

최신 정보

나는 루프를 사용하는 것이 (매우 자주) 나쁜 R 코딩 스타일이라는 것에 동의한다 (위의 논의 참조). 사용 list2env()(그것을 언급에 대한 @mbq 감사는)이 @Han 린 샹의 질문에 또 다른 솔루션입니다 :

x <- as.list(rnorm(10000))
names(x) <- paste("a", 1:length(x), sep = "")
list2env(x , envir = .GlobalEnv)


답변

값이 벡터 인 경우 루프가 필요하지 않습니다.

vals <- rnorm(3)
n    <- length(vals)
lhs  <- paste("a",    1:n,     sep="")
rhs  <- paste("vals[",1:n,"]", sep="")
eq   <- paste(paste(lhs, rhs, sep="<-"), collapse=";")
eval(parse(text=eq))

부수적으로, 이것이 R을 좋아하는 이유입니다.


답변


이 글은 stats 카테고리에 분류되었고 태그가 있으며 님에 의해 에 작성되었습니다.