在R中的矩阵内向元素添加字符

时间:2016-06-01 10:34:32

标签: r matrix

我正在寻找一种方法来将一个字符添加到矩阵中元素的样本中。然后我创建一个包含字母a-e的随机分布的矩阵,我希望接下来要做的是创建一个" speciation"在我采样的任何元素成为新物种的事件中#34;例如。矩阵的样本是" c"然后我添加" 2"对它来说,它变成了" c2"。

我现在运行的基本代码是:

##Create Species Vector
species.v<-letters[1:5]
species.v<as.character(species.v)
##Check species Vector
species.v


#Matrix creation (Random)
orig.neutral<- matrix(sample(species.v,25,replace=TRUE),
                        nrow=5,
                        ncol=5)
##Check neutral.matrix
orig.neutral


##Random Replacement
orig.neutral[sample(length(orig.neutral),1)]<-as.character(sample(orig.neutral,1))
orig.neutral

我想做的是交换随机替换

  

orig.neutral [样品(长度(orig.neutral),1)]&LT; -as.character(样品(orig.neutral,1)

用于将2添加到样本的任何内容的方法。

在一个理想的世界中,如果该单元格中已经有一个数字,我也能够添加更多的物种形成(即如果它已经是&#34; b2&#34;我可以制造它&#34; b3&#34;但我认为无论如何我都能做到这一点,只需要编码就可以在第一时间实际添加2。(虽然已经考虑过更多但是只能用b23结束...这根本不是我想要的!)

任何帮助将不胜感激

非常感谢

编辑:

使用@ sam81推荐的粘贴,我添加了一行:

neutral.v0<-orig.neutral ##keep original to compare

neutral.v0[sample(length(neutral.v0),1)] = paste("2", sep=" ")

只替换2中的样本,而不是样本中的任何内容。我试过粘贴((样本(长度(中性.v0),1)),&#34; 2&#34;,sep =&#34;&#34;)但是这只是将数字返回到矩阵中(例如&# 34; 19 2&#34;)我假设是采样矩阵中的位置。

1 个答案:

答案 0 :(得分:1)

您可以使用paste添加字符,例如,以下行将为矩阵的每个元素添加2:

orig.neutral = paste(orig.neutral, "2", sep="")

如果您只想将2添加到矩阵中随机选择的单个元素,那么您可以执行以下操作:

elIdx = sample(length(neutral.v0),1) #index of a randomly selected element
orig.neutral[elIdx] = paste(orig.neutral[elIdx], "2", sep="")