我正在寻找一种方法来将一个字符添加到矩阵中元素的样本中。然后我创建一个包含字母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;)我假设是采样矩阵中的位置。
答案 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="")