【发布时间】:2020-03-29 15:04:25
【问题描述】:
我无法正确索引函数以使其返回正确的值。该函数仅在满足if 条件且ifelse 语句处于for 循环中时应用。
我已经简化了我的函数和数据集,以使示例在此处可重现 - 我目前编写它的方式不是很有效,但我只是想确保索引有效,以便我可以尝试将其应用到我的更多复杂的数据集,然后继续优化。
首先我从一些数据开始:
var1 <- seq(100, 500, 100)
matrix1 <- matrix(1:12, ncol=2)
matrix2 <- matrix(c(1,2,5,6,8,9,11,12,14,15,17,20), ncol=2)
matrix3 <- matrix(seq(1,34,3), ncol=2)
list1 <- list(matrix1, matrix2, matrix3)
我有一个接收如下数据框的函数:
func1 <- function(df1) {
data1 <- df1[,1]
data2 <- df1[,2]
data3 <- vector()
data3[i] <- sum(data1, data2)
return(data3)
}
我的for 循环如下所示:
for (i in (1:3)) {
vec1 <- var1
vec2 <- diff(unlist(list1[[i]])[,1])
df1 <- matrix()
df1 <- cbind(vec1, vec2)
len <- length(which(vec2<3))
if (len>1) {
func1(df1)
}
else data3 <- NA
print(data3)
}
如果我的df1 通过了length 测试,并且如果它不满足长度要求,我想只应用func1,我想给它一个NA 值。
当i=1、len=5和data3=1505时;当i=2、len=4 和data3=1508;当i=3,len=0 所以data3=NA。总之,我想从for循环返回的结果是data3 = c(1505, 1508, NA)。
但是,我现在无法获得该结果,并且由于单独运行 i=1 i=2 和 i=3 有效,我怀疑我遇到了索引问题(可能在 func1 内部)假设)但无法弄清楚。谁能给我一些建议?
【问题讨论】:
标签: r for-loop if-statement indexing