2017-10-07 41 views
0
n <- 1000 
xcat <- sample(x=c("A","B", "C", "D", "E"), 
size=n, replace=TRUE, prob=rep(1/5, 5)) #(a) 
xcont<-rnorm(n,23,4) 
dat<-data.frame(xcat,xcont) 
for(i in 1:200){ 
assign(paste('x',i,sep=""),rnorm(n,2+i*2,i)) 
dat<-cbind(dat,get(paste('x',i,sep=""))) 
} 
names(dat)[1:4] 
[1] "xcat"        "xcont"       "get(paste(\"x\", i, sep = \"\"))" "get(paste(\"x\", i, sep = \"\"))" 

dat中的變量名不是我想要的(get(paste(\「x \」,i,sep = \「\」))「」get(paste(\「x \」,i ,sep = \「\」)))。我想要x1,x2,x3的名字......我怎樣才能得到數據框的正確名稱?如何在循環中保留get()後的變量名?

回答

0

如果你只是想創建新的變數,這也應該工作:

n <- 1000 
xcat <- sample(x = c("A","B", "C", "D", "E"), 
       size = n, replace = TRUE, prob = rep(1/5, 5)) #(a) 
xcont <- rnorm(n, 23, 4) 
dat <- data.frame(xcat, xcont) 

for(i in 1:200){ 
    col_new <- paste0("x", i) 
    dat[, col_new] <- rnorm(n, 2+i*2, i) 
} 
names(dat)[1:4] 
0

命名爲 「事後」:

n <- 1000 
xcat <- sample(x=c("A","B", "C", "D", "E"), 
size=n, replace=TRUE, prob=rep(1/5, 5)) 
xcont<-rnorm(n,23,4) 
dat<-data.frame(xcat,xcont) 
for(i in 1:200){ 

dat<-cbind(dat, rnorm(n,2+i*2,i)) 

} 
names(dat)[3:202] <- paste('x',1:200,sep="") 
names(dat)[1:4] 
#[1] "xcat" "xcont" "x1" "x2"