Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用在for()循环中创建的对象_R - Fatal编程技术网

调用在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已经有了答案后很长时间才发表了评论。我的网页刷新速度一定很慢,没有看到它。