R select 数据通过 Move 对象中的循环

R select data through loop in Move object

我正在尝试使用循环来 select 移动数据集的第一个和最后一个日期 - 每只动物。我按如下方式创建了循环,并将 MMunstacked 作为我的 Move 对象:

> ID <- c("AP002", "AP003", "AP004", "AP005", "AP006", "AP007")
for (i in 1:length(ID)) {
  print(ID[i])
  print(head(timestamps(MMunstacked$ID[i]), n=1))
  print(tail(timestamps(MMunstacked$ID[i]), n=1))
}

但它给了我以下警告:

Error in (function (classes, fdef, mtable): unable to find an inherited method for function 'timestamps' for signature "NULL" 

这是因为

> MMunstacked$ID[i]
NULL

但是

> ID[1] 
"AP002"

和两者

> MMunstacked$"AP002" 
> MMunstacked$AP002 

给我想要的数据。

但是如果我把它们放在一起:

> MMunstacked$ID[1] 
NULL

它又给我NULL,这可能是循环中发生的事情。 我对 R 中的这个对象没有太多经验,似乎无法在线找到答案。

我想,也许是因为 class,但似乎并非如此。 只输入 MMunstacked$AP002 和从 ID 中提取时的 "AP002" 肯定有区别,但我不知道它是什么?

你不能这样混合寻址。 $ 运算符之后的部分不会按照您的意愿进行评估和转换为名称。您可以使用 [[ 运算符来达到所需的效果。

ID <- c("A")
test <- list("A" = "result")
test[[ID[1]]]

这样,首先评估双括号中的内容,然后使用名称调用测试列表。