无法查找字段名中的R
问题描述:
的数据帧的buff包含用于不同的产品和itemnumber bufferlevels两列。无法查找字段名中的R
buffer.variant buffer.buf_size
1 mimic1 3
2 mimic2 0
3 mimic3 0
4 mimic4 0
5 mimic5 3
履行是一个数据框架,第一列作为日期和变体从buff作为其他列。我想要写一个循环,: 1.>查找该列名的buff 2的第一行中的>分配与存在于浅黄色的第二列中的值的第一行和第i列单元,即,缓冲水平
variants=names(fulfillment[,-1])
for(i in 1:ncol(fulfillment)){
fulfillment[1,i+1]=buff[which(buff[,1]==variants[i]),2] }
代码失败,出现错误:
Error in `[<-.data.frame`(`*tmp*`, 1, i + 1, value = integer(0)): replacement has length zero
答
所以我能够解决的问题。问题在于R返回空值。我在条件中添加了一个空值检查。 @HubertL指出了另外一个小问题,但是当我开始打印迭代器i的值时,我才意识到这一点。它在程序流进入代码的'Then'部分之前被初始化为1并且被弃用为0。下面的代码:
variants=names(fulfillment[,-1])
for(i in 1:(ncol(fulfillment)-1)){
if(!is.null(match(variants[i],buff[,1]))){
print(paste0("step ",i))
print(paste("old value ",fulfillment[1,i+1]))
fulfillment[1,i+1]=buff[match(variants[i],buff[,1]),2]}
print(paste0("New value ",fulfillment[1,i+1]))
}
'的(我在1:点(NcoI(履行)-1))' – HubertL
可以忽略'which' – HubertL
使用的功能相匹配 –