指的是动态创建的数据框

时间:2014-12-01 21:38:09

标签: r

我需要动态创建数据框并引用它们。到目前为止,我可以动态创建数据框,如:

master<-c("bob","ed","frank")
d<-seq(1:10)
for (i in 1:length(master)){
  assign(master[i], d )
}

ed[6]

现在,如果我这样做

ls()

我可以看到有一个&#34; ed&#34;宾语。我想引用一个操作它中的数据而不引用名称。

即。而不是做&#34; ed [6]&#34;

我想要&#34; ed&#34;在一个变量中:

master[2][6] # BUT THIS DOES NOT WORK

df<-"ed" #this does not work either
df[6]

我动态地命名数据帧是我可以动态引用它们的。我怎么能这样做?

谢谢!

2 个答案:

答案 0 :(得分:0)

使用get

get(master[2])[5]
get(master[2])[2]

如果要设置值,则需要使用assign。但要小心,它会将值分配为一个整体。我的意思是你不能设置一个矢量值,你需要设置整个矢量。

master<-c("bob","ed","frank")
d<-seq(1:10)
for (i in 1:length(master)){
  assign(master[i], d )
}

ed[6]

get(master[2])[5]
get(master[2])[2]

temp <- get(master[2])

# assign value 20 to index 5
assign("ed",20)

assign("ed[6]",20) # it creates a variable named "ed[6]", not what you want

ls(pattern = "^ed.*$")

temp[6] = 20

assign("ed",temp)
rm(temp) # remove temp if you do not need it

get("ed")[6]

答案 1 :(得分:0)

您可以像Atilla建议的那样使用get,但对于这样的情况,您最好创建一个列表,然后再按列表索引引用对象。创建一个对象然后是一大堆更整洁,并且引用内容很简单。

# create empty list  
my_list <- list()

# put stuff in the list    
for (i in 1:length(master)) {
  my_list[[i]] <- d
}

# get the 6th element from the 2nd object in my_list
my_list[[2]][6]