2017-10-07 65 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"