R-使用从其他列计算的值创建新的.csv列
我有一列值(CO2.Value..PPM),并希望创建一个新列(CO2_new),它是从第一列中获取每个值并按比例缩放的结果。以下是我所尝试的:R-使用从其他列计算的值创建新的.csv列,r,csv,R,Csv,我有一列值(CO2.Value..PPM),并希望创建一个新列(CO2_new),它是从第一列中获取每个值并按比例缩放的结果。以下是我所尝试的: c$co2_new = 0.0 for (i in c$co2_new){ i = i + ((c$CO2.Value..PPM.-(-24.395))/1.074) return i } head(c$co2_new) 但它返回一个错误(意外符号),列仍然只包含0。我觉得这很简单,但我还没能做到 您的代码中有一些东西要么是错误的,要么是不好
c$co2_new = 0.0
for (i in c$co2_new){
i = i + ((c$CO2.Value..PPM.-(-24.395))/1.074)
return i
}
head(c$co2_new)
但它返回一个错误(意外符号),列仍然只包含0。我觉得这很简单,但我还没能做到 您的代码中有一些东西要么是错误的,要么是不好的
c
作为变量名通常是不好的形式;虽然R可以理解变量c
和基函数c
(用于连接)之间的区别,但在读取代码时,它显然会混淆
事实上,有许多人不喜欢单字母变量作为重要变量(有些人说是任何变量);也许在小循环中使用i
是可以接受的,但即使这样,也有人不同意
其基本原理主要基于代码的共享和维护。如果你在几个月或一年内观察事物,你会非常清楚你的c
中有什么,它在语义上意味着什么,等等吗for
循环中使用return
,除非它在一个函数中,并且您打算中断for
循环和函数。具体来说,您在for
循环中的预期操作是从$CO2.value..PPM中的一个特定位置获取值,缩放它,然后将该值分配到$CO2\u new
中的相同位置。在这种情况下,您的for
循环变量实际上应该是向量中的索引,而不是值本身,以便您可以引用两个向量中的位置。也许(根据我下面的数字3,这不是一个好代码):
for
循环可以替换为:
c$co2_new = 0.0
c$co2_new = c$co2_new + ((c$CO2.Value..PPM. - (-24.395))/1.074)
## no need for c$co2_new = 0.0
c$co2_new = (c$CO2.Value..PPM. - (-24.395))/1.074
你的代码肯定不起作用。您不会返回内部for循环,如果您愿意,它将是
return()
。另外,您正在更改循环的计数器值,并希望它能神奇地替换新列中的值。试试这个:c$co2\u new我建议您阅读一些介绍R的材料,以便更好地理解R的语法。
## no need for c$co2_new = 0.0
c$co2_new = (c$CO2.Value..PPM. - (-24.395))/1.074