r - R通过移动对象中的循环选择数据
问题描述
我正在尝试使用循环来选择 Move 数据集的第一个和最后一个日期 - 每只动物。我按如下方式创建了循环,将 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 中的这个对象没有太多经验,似乎无法在网上找到答案。
我想,也许是因为班级,但似乎并非如此。仅键入 MMunstacked$AP002 和从 ID 中提取时,“AP002”之间肯定有区别,但我不知道它是什么?
解决方案
你不能像那样混合寻址。运算符后面的部分$
将不会被评估并转换为您想要的名称。您可以使用[[
运算符来达到预期的效果。
ID <- c("A")
test <- list("A" = "result")
test[[ID[1]]]
这样,首先评估双括号中的内容,然后使用名称调用测试列表。
推荐阅读
- gitlab - 无法注释 OpenShift 私有 git 存储库部署的秘密
- laravel - 无法隐藏 yajra 数据表 oracle 中的列
- c++ - 将自定义标记添加到 perf 可以找到和热点显示的 C++ 源代码
- c++ - 在 C++ 中将 2 个 1000 位二进制数相乘
- ios - UITableView 分页 willDisplay 调用一次又一次 swift
- drupal-7 - Drupal 7 - 有机组 - 部门视图
- node.js - 将文件流式传输给用户以在 Node/Express 中下载
- swift - transform.scale 上的 CABasicAnimation 在 X 和 Y 轴上平移 CAShapeLayer
- mysql - MySQL - 如何检查数据的连续性
- javascript - module-deps 无法解析相关的 require()