r - R在具有动物园滞后功能的ddply循环中第一次而不是第二次找到我的对象-无法弄清楚如何修改代码
问题描述
我编写的函数有问题,zoo
并将其应用到数据集,使用ddply
. 我已经尝试了所有其他 *apply 函数,并且不得不重命名我的字符串变量元素,但我仍然遇到错误。我想我已经弄清楚这篇文章的错误是什么,但我无法理解纠正代码的方法。在解释之前,我将把数据集和我的代码放在下面。
Name <- c("Aberavon", "Aberavon", "Aberavon", "AberdeenNorth",
"AberdeenNorth", "AberdeenNorth")
year <- c(1964, 1966, 1970, 1964, 1966, 1970)
winner <- c("LAB", "LAB", "LIB", "CON", "CON", "CON")
dat <- data.frame(Name, year, winner)
tag_party_change <- function(x){
x = x[order(x$year),]
plab = zoo(x$top1_label) #this top1_label is a previous function to find
#winner and return the labels (CON, LAB, LIB etc.)
plab_lag = stats::lag(plab, -1, na.pad = T)
x$pdelta = ifelse(plab == plab_lag, 0, 1)
return(x)
}
dat_final = ddply(dat, as.quoted(dat$Name), tag_party_change)
所以我在这里要做的是让 R 查看Name
元素,它的前一个year
,看看是否有变化,如果新向量中winner
有变化返回,则没有变化。所以新的向量值应该在示例中。但我收到了这个错误:1
0
NA, 0, 1, NA, 0, 0
Error in FUN(X[[i]], ...) : object 'Aberavon' not found
现在从我从以前的帖子中可以得出的结论(我已经使用了很多来达到这一步!),这意味着 R 已经找到Aberavon
了第一次,然后回去寻找它并且它不存在 - 也许是因为它第一次将其存储在本地环境中,然后第二次就消失了。也许我需要在Name
某个地方将变量放入函数中,这样就不会有这个存储问题,因为它会在数据集/全局环境中寻找它的永久位置?或者也许我离题了,这是另一个问题?
这段代码有很多错误,我不得不修复其他 *apply 函数试图让它工作的问题,但这是我返回的最简单的错误。真的希望有知识的人可以提供帮助,这样我就可以继续这项工作!谢谢你。
PS 在使用 SPSS 很长时间后,我对 R 还很陌生,所以我希望示例代码可以正常工作。
解决方案
推荐阅读
- objective-c - 如何使用子视图调整stackview并添加约束
- javascript - 如何修复 winform webbrowser 上的 JavaScript 库问题
- unity3d - 如何从我制作的已编译统一游戏中获取文件
- python-3.x - 使用不同的数组拆分不带分隔符
- ios - 无法获取 AVCaptureDevice
- html - 使用css将图像定位在标题中
- python - m2m 字段的更新是如何工作的?Django 休息框架
- c++ - 如何检查从键盘输入的特定整数值是否存在于C++文件的一行或多行中
- go - Golang 客户端库对 Apache Airflow 的支持
- php - 如何在不替换先前数据的情况下将数据插入数组