几个月前,我做了一个小循环,自动分配两个数据帧的列。基本上,df仅包含“深度”值,df2包含“深度”和“年龄”值。因此,当“深度”值相等时,我可以将“年龄”值分配给df。
i = 1
k = 1
while (k < length(df2$Depth)) {
if (df2$Depth[k] == df$Depth[i]){
df$Age2[i] = df2$Age[k]
i = i + 1
}
k = k + 1
}
最近我需要再次使用这个循环,但我发现它不再是woking了,并不是因为循环...任何时候我想通过df$COLUNM[x] = df2$COLUNM[y]
分配colunm的值它不起作用。为df$COLUNM[x]
而不是真值df2$COLUNM[y]
分配的值是相对于其位置的行号。
只是不知道这是一个错误还是我做错了什么......不要理解为什么这个工作要到几个月前才能工作,现在却不行。
这种情况的一种方式(也是我能想到的唯一方法)就是你无意中创建了一个看起来像数字的因子变量,然后将值赋给“真”数字。看这个例子:
X <- rnorm(10)
y=factor(1:10)
y=factor(101:110)
X[4] <- y[5]
X
[1] -0.2093544 -1.8858439 -0.1048452 5.0000000 -1.1665309
[6] -2.1416764 1.6572388 -0.7806782 1.0002025 0.6032613
请注意,y [5]的“值”未被X“接受”,而是指定了它在因子水平中的相对位置。所以你应该检查:
class(df2$Age)
我强烈怀疑结果将是“因素”。您可以使用以下方法恢复原始值:
df2$Age <- as.numeric(as.character(df2$Age))