Thursday, March 21, 2013

R Tip - Loops and Names


# http://stats.stackexchange.com/questions/10838/produce-a-list-of-variable-name-in-a-for-loop-then-assign-values-to-them

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

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


# http://stackoverflow.com/questions/10369187/use-object-name-in-a-loop

a <- list(A = data.frame(a=runif(2), b=runif(2)),
B = data.frame(a=runif(2), b=runif(2)),
C = data.frame(a=runif(2), b=runif(2)))


# Loop over indices (faster, more cumbersome)
ns <- names(a)
for(i in seq_along(a)) {
v <- a[[i]] # extract value
n <- ns[[i]] # extract name
cat(n, ": \n")
str(v)
}

# Loop over names (easy but slower)
for(n in names(a)) {
v <- a[[n]] # extract value
cat(n, ": \n")
str(v)
}

No comments: