在R中运行转换循环时,我不断得到;if(t[val2,n]!=t[val2,val]){:缺少需要TRUE/FALSE的值";
我正在尝试编写一个以表作为输入的代码,该表可能有也可能没有同名的列 代码应该做的事情是一次遍历一列,如果找到匹配的列,它将按以下方式合并。如果合并时col1和col2都有值1,则它们有值2;如果它们有1和0,则合并时它们有值1,否则为0 在我的头脑中,代码应该可以工作,但我就是不明白为什么我会不断出现这个错误。我试图更改一些if子句条件,但仍然无法理解 任何帮助都将不胜感激,因为我已经在这个问题上困了很长时间 R码在R中运行转换循环时,我不断得到;if(t[val2,n]!=t[val2,val]){:缺少需要TRUE/FALSE的值";,r,R,我正在尝试编写一个以表作为输入的代码,该表可能有也可能没有同名的列 代码应该做的事情是一次遍历一列,如果找到匹配的列,它将按以下方式合并。如果合并时col1和col2都有值1,则它们有值2;如果它们有1和0,则合并时它们有值1,否则为0 在我的头脑中,代码应该可以工作,但我就是不明白为什么我会不断出现这个错误。我试图更改一些if子句条件,但仍然无法理解 任何帮助都将不胜感激,因为我已经在这个问题上困了很长时间 R码 m=ncol(t) while (m>0){ if(ncol(t)==
m=ncol(t)
while (m>0){
if(ncol(t)==1){
temp2=matrix(nrow = nrow(t),ncol =1)
colnames(temp2)=colnames(t)[val]
temp2=t[,val]
t=as.matrix(t[,-val])
}
else{
n=val+1
while(colnames(t)[val]!=colnames(t)[n]&&n<ncol(t)){
n=n+1}
temp2=matrix(nrow = nrow(t),ncol =1)
colnames(temp2)=colnames(t)[val]
if(colnames(t)[val]==colnames(t)[n]){
for (val2 in 1:nrow(t)){
if(is.na(t[val2,val])==F){
if(t[val2,val]==1){
if(t[val2,n]==t[val2,val]){
temp2[val2,1]=2
}
else{
temp2[val2,1]=1
}
}
else {
if(t[val2,n]!=t[val2,val]){
temp2[val2]=1}
else
{temp2[val2,1]=0}
}
}
}
t=as.matrix(t[,-c(val,n)])
}
else{
temp2=t[,val]
t=as.matrix(t[,-val])
}
}
b2=cbind(b2,temp2)
m=ncol(t)
}
示例输入
|col1 |col2 |col3 |col2 |col6 |col1|
|------|-----|-----|-----|-----|----|
|1 |0 |1 |0 |0 |0 |
|0 |0 |1 |1 |0 |1 |
|1 |1 |1 |0 |0 |1 |
|0 |1 |0 |1 |0 |0 |
预期产量
|col1 |col2 |col3|col6|
|:---:|:---:|:--:|:--:|
|1 |0 |1 |0 |
|1 |1 |1 |0 |
|2 |1 |1 |0 |
|0 |2 |0 |0 |
欢迎使用SO。请提供一些输入数据以及您希望从中获得的输出。
|col1 |col2 |col3|col6|
|:---:|:---:|:--:|:--:|
|1 |0 |1 |0 |
|1 |1 |1 |0 |
|2 |1 |1 |0 |
|0 |2 |0 |0 |