【发布时间】:2018-06-04 13:35:11
【问题描述】:
我在data.frame 中有一系列列,我想获取其中的最后一个值,不包括任何 NA。我用来完成这项工作的功能是
last_value <- function(x) tail(x[!is.na(x)], 1)
我正在使用apply() 为每个观察(按行)跨 13 列执行此函数。
df$LastVal<-apply(df[,c(116, 561, 1006, 1451, 1896, 2341, 2786, 3231,
3676, 4121, 4566, 5011, 5456)], 1, FUN=last_value)
我的问题是输出作为 5336(总观察值)的列表出现,而不仅仅是按行显示最后一个值的向量。答案似乎在那里,但又以列表的形式出现。我以前用过这个功能,效果很好。当我str() 我的列时,它们都是整数。
如果没有值而只有 NA,这个函数会被绊倒吗?
我应该补充一点,当我 unlist() 新变量时,我收到一条错误消息,提示“替换有 4649 行,数据有 5336”,所以我认为这可能与 NA 有关。
【问题讨论】:
-
如果没有值而只有 NA,这个函数会不会出错? 可以,我刚试过,它确实返回了一个列表。
-
如果
all(is.na(x))是TRUE从你的函数返回NA。 -
@RuiBarradas 我怎样才能重新编写函数来避免这种情况?我无法取出那些具有 NA 的行,因为它们对于另一次分析至关重要。