r - 使用apply获取一列的值并计算另一列的值

时间:2015-05-15 19:57:03

标签: r apply

我有一个测量数据框。

一列显示以mm为单位的测量值,另一列以单位显示(相对于我正在使用的立体显微镜上的缩放级别而变化的相对比例)。 我想浏览数据框的每一行,并且每个" length_mm"等于NA,我想使用" length_units"中的值。计算" length_mm"。

到目前为止,我已尝试过此代码:

    convert_to_mm <- function(x) {
      x["length_mm"==NA] <- x["length_units"]/10
      x["length_mm"]
    }
    apply(zooplankton[,c("length_mm","length_units")], 1, convert_to_mm)

有时我也有两个&#34; length_mm&#34;和&#34; length_units&#34;等于NA。在这些情况下,我想跳过这一行。

2 个答案:

答案 0 :(得分:3)

这比你做的更容易

# Which are the rows with bad values for mm? Create an indexing vector:
bad_mm <- is.na(zooplankton$length_mm)

# Now, for those rows, replace length_mm with length_units/10
zooplankton$length_mm[bad_mm] <- zooplankton$length_units[bad_mm]/10

在检查NA值时,请记住使用is.na(x)而不是x==NA。为什么?看看NA==NA的提示!

答案 1 :(得分:0)

几乎就在那里。您应该使用is.na(myVariable)而不是myVariable ==NA