【发布时间】:2019-01-15 11:01:20
【问题描述】:
我正在处理一个包含 2132 个值的大型数据集,其中包含两列,一列表示客户的开始日期,另一列表示结束日期。
我目前正在使用 while 循环来遍历我的数据集。如果客户的结束日期是 NA,它会将“NA”添加到向量 s。如果结束日期大于开始日期,则将两者相减并将该数字添加到 s。最后,如果开始日期和结束日期相等,则将向量 s 加 1。
向量 s 中我应该拥有的前几个值是:NA, 1,1,NA,2,1,2。
然而,我的 while 循环当前正在返回:1, NA, 1, 1, NA,1,1。
我的 while 循环逻辑有什么问题?
我的数据集的前几个值是:
a(first) b(last)
2 NA
3 3
3 3
4 NA
4 5
2 2
2 3
我的代码如下:
x <- 1
while (x <= 2132)
{
if (is.na(b[x]))
{
s <- c(s,'NA')
}
else if(a[x] < b[x])
{
s <- c(s,(b[x] - a[x]) + 1)
}
else if (a[x] == b[x])
{
s <- c(s,1)
}
x = x + 1
}
【问题讨论】:
-
假设您将
s初始化为空的numeric或character,循环产生s值为[1] NA 1 1 NA 2 1 2(使用x <= length(b)) -
忘记将 s 初始化为空向量。谢谢!!
标签: r while-loop