调用在for()循环中创建的对象
我有一个名为调用在for()循环中创建的对象,r,R,我有一个名为mergedColors的颜色列表。从这个颜色列表中,我使用for()循环遍历并创建对应于每个唯一颜色的矩阵。到目前为止,一切正常。然后,在我最初创建矩阵之后,我想继续修改/编辑循环中的矩阵。在本例中,我尝试更改第三列的名称。然而,我并不完全确定如何去做。当我试图用我用来创建它们的相同语法调用它们时 colnames(paste("merged",each,sep="_"))[3] = "Temp" R返回一个错误:“赋值的目标扩展为非语言对象”。当我还在循环中时,我应该如何调用刚
mergedColors
的颜色列表。从这个颜色列表中,我使用for()
循环遍历并创建对应于每个唯一颜色的矩阵。到目前为止,一切正常。然后,在我最初创建矩阵之后,我想继续修改/编辑循环中的矩阵。在本例中,我尝试更改第三列的名称。然而,我并不完全确定如何去做。当我试图用我用来创建它们的相同语法调用它们时
colnames(paste("merged",each,sep="_"))[3] = "Temp"
R返回一个错误:“赋值的目标扩展为非语言对象”。当我还在循环中时,我应该如何调用刚刚创建的矩阵
样本数据:
mergedColors = c("red", "blue", "green", "red", "black", "blue", "blue", "green", "yellow", "red")
table(mergedColors)
for(each in unique(mergedColors)){
assign(paste("merged",each,sep="_"), as.matrix(cbind(cars, c(each))))
#colnames(paste("merged",each,sep="_"))[3] = "Temp"
}
你只需要使用
get
告诉R你粘贴的东西是指一个对象
像这样:
tmp <- get(paste("merged",each,sep="_"))
colnames(tmp)[3] = "Temp"
> head(tmp)
speed dist Temp
[1,] " 4" " 2" "yellow"
[2,] " 4" " 10" "yellow"
[3,] " 7" " 4" "yellow"
[4,] " 7" " 22" "yellow"
[5,] " 8" " 16" "yellow"
[6,] " 9" " 10" "yellow"
tmp头(tmp)
速度分布温度
[1,][4”“2”“黄色”
[2,][4”“10”“黄色”
[3,]“7”“4”“黄色”
[4,]“7”“22”“黄色”
[5,]“8”“16”“黄色”
[6,]“9”“10”“黄色”
下面是完整的循环:
for(each in unique(mergedColors)){
assign(paste("merged",each,sep="_"), as.matrix(cbind(cars, c(each))))
#colnames(paste("merged",each,sep="_"))[3] = "Temp"
tmp <- get(paste("merged",each,sep="_"))
colnames(tmp)[3] = "Temp"
assign(paste("merged",each,sep="_"), tmp)
}
for(每个都是唯一的(合并的颜色)){
分配(粘贴(“合并”,每个,sep=“41;”),作为.matrix(cbind(cars,c(每个)))
#colnames(粘贴(“合并”,每个,sep=“”))[3]=“临时”
tmp你只需要使用get
告诉R你粘贴的东西是指一个对象
像这样:
tmp <- get(paste("merged",each,sep="_"))
colnames(tmp)[3] = "Temp"
> head(tmp)
speed dist Temp
[1,] " 4" " 2" "yellow"
[2,] " 4" " 10" "yellow"
[3,] " 7" " 4" "yellow"
[4,] " 7" " 22" "yellow"
[5,] " 8" " 16" "yellow"
[6,] " 9" " 10" "yellow"
tmp头(tmp)
速度分布温度
[1,][4”“2”“黄色”
[2,][4”“10”“黄色”
[3,]“7”“4”“黄色”
[4,]“7”“22”“黄色”
[5,]“8”“16”“黄色”
[6,]“9”“10”“黄色”
下面是完整的循环:
for(each in unique(mergedColors)){
assign(paste("merged",each,sep="_"), as.matrix(cbind(cars, c(each))))
#colnames(paste("merged",each,sep="_"))[3] = "Temp"
tmp <- get(paste("merged",each,sep="_"))
colnames(tmp)[3] = "Temp"
assign(paste("merged",each,sep="_"), tmp)
}
for(每个都是唯一的(合并的颜色)){
分配(粘贴(“合并”,每个,sep=“41;”),作为.matrix(cbind(cars,c(每个)))
#colnames(粘贴(“合并”,每个,sep=“”))[3]=“临时”
tmp但是我认为你创建了一个新的矩阵。它不会改变actuel矩阵的名称,或者我错了吗?@Alex是对的,所以你只需要像以前一样运行assign
操作来覆盖它。我将添加完整的循环来向你展示。同时看看这个:@Alex很有趣。很清楚,这个解决方案对你有用吗u?它似乎产生了我想要的结果;只是想检查一下。@Hack-R这不是我的问题;)但我想它是有效的,尽管我认为他们的解决方案可能更好。但我认为,这样你就创建了一个新的矩阵。它不会改变actuel矩阵的名称,或者我错了吗?@Alex是的,所以你只需要运行assign
操作我将添加完整的循环来向您展示。另外,请看一下:@Alex有趣。请澄清,此解决方案对您有效吗?它似乎为我产生了所需的结果;只是想检查一下。@Hack-R这不是我的问题;)但我想它有效,尽管我认为他们的解决方案可能更好。Someone会告诉你使用get
,但你不应该。你应该回去,用一个命名的列表重做所有这些。@joran在使用get
@Hack-R已经有答案之后,你发表了这样的评论。我的网页刷新速度一定很慢,没有看到它。有人会告诉你使用get
,但你应该这样做ldn没有。你应该回去,用一个命名的列表重做所有这些。@joran你在使用get
@Hack-R已经有了答案后很长时间才发表了评论。我的网页刷新速度一定很慢,没有看到它。