我正在努力减少我给出的基因名单。我正在尝试消除可能存在的任何重复名称,但在运行代码时我一直收到错误:
counter=0
i=0
j=0
geneNamesRevised=array(dim=length(geneNames))
for (i in 0:length(geneNamesRevised))
geneNamesRevised[i]=""
geneNamesRevised
for (i in 1:length(geneNames))
for (j in 1:length(geneNamesRevised))
if (geneNames[i]==geneNamesRevised[j])
{
break
}
else if ((j==length(geneNamesRevised)-1) &&
(geneNames[i]!=geneNamesRevised[j]))
{
geneNamesRevised[counter]=geneNames[i]
counter++
}
错误消息是重复的字符串:
条件的长度>在图1中仅使用第一个元素,条件长度> 1。在图1中仅使用第一个元素,条件长度> 1。 1,只使用第一个元素
并且此错误消息是针对具有'&&'的最后一个“else if”语句。
谢谢!
答案 0 :(得分:2)
为什么不
geneNamesRevised <- unique( geneNames )
...返回缩短的列表。还有一个duplicated
函数可用于在否定时删除重复项。
答案 1 :(得分:1)
您的代码中存在一些问题。
1)else
未正确指定 - 或者不是:)感谢@Mohsen_Fatemi
2)&amp;通常是你需要的,而不是&amp;&amp;
3)counter ++不是R
复制下面的代码并查看它是否正常运行
for (i in 1:length(geneNames)){
for (j in 1:length(geneNamesRevised)){
if (geneNames[i]==geneNamesRevised[j])
{
break
} else {
if ((j==length(geneNamesRevised)-1) & (geneNames[i]!=geneNamesRevised[j]))
{
geneNamesRevised[counter]=geneNames[i]
counter <- counter + 1
}
}
}
}
修改强>
4)你也错过了for
答案 2 :(得分:0)
使用&
代替&&
,
else if ((j==length(geneNamesRevised)-1) & (geneNames[i]!=geneNamesRevised[j]))