r - 先前计算的行是否会影响 R 循环中的连续行?
问题描述
我有这个代码
x=c(T,T,F,T,F)
for (i in 1:5){
if(i > 1 & i < 5){
x[i ] = x[i-1] & x[i+1] & x[i]
print(x)
}
else if(i < 5){
x[i] = !x[i] | !x[i+1]
}
}
我试图弄清楚它给我的输出
[1] FALSE FALSE FALSE TRUE FALSE
[1] FALSE FALSE FALSE TRUE FALSE
[1] FALSE FALSE FALSE FALSE FALSE
我想知道第一个值x[2]
(即x[2] = T & F & T
)是否会影响下一行的输出,x[3]
或者每行的这些计算是否相互独立?
解决方案
是的,您的代码x
在 for 循环中发生了变化:
x=c(T,T,F,T,F)
for (i in 1:5){
cat(paste0("\nLoop iteration Nr. ", i, " 'x' is: ", paste0(x, collapse=", ")))
if(i > 1 & i < 5){
cat(paste0("\nAbout to set x[", i, "] to ", x[i - 1] & x[i + 1] & x[i]))
x[i] = x[i - 1] & x[i + 1] & x[i]
} else if(i < 5){
cat(paste0("\nAbout to set x[", i, "] to ", !x[i] | !x[i+1]))
x[i] = !x[i] | !x[i+1]
}
}
Loop iteration Nr. 1 'x' is: TRUE, TRUE, FALSE, TRUE, FALSE
About to set x[1] to FALSE
Loop iteration Nr. 2 'x' is: FALSE, TRUE, FALSE, TRUE, FALSE
About to set x[2] to FALSE
Loop iteration Nr. 3 'x' is: FALSE, FALSE, FALSE, TRUE, FALSE
About to set x[3] to FALSE
Loop iteration Nr. 4 'x' is: FALSE, FALSE, FALSE, TRUE, FALSE
About to set x[4] to FALSE
Loop iteration Nr. 5 'x' is: FALSE, FALSE, FALSE, FALSE, FALSE
并且由于您在每次迭代中使用前一个值来计算当前值,因此第 i 步会影响第 i+1 步。
推荐阅读
- time - 如何使用 NLTK 获取时间和日期或特定产品名称?
- java - 安卓应用。尝试保存图片时崩溃
- angular - 角材料日期选择器日期格式
- javascript - 在 VUE 中切换样式时边框样式无法正确呈现
- c++ - 如何确定使用的函数的顺序?
- three.js - three.js 从 gltf 异议创建网格
- javascript - Javascript 多函数 setTimeout 同步问题,还是有更好的办法?
- excel - 使用VBA将html源代码提取到excel中
- java - 程序未捕获重复字符串和正确处理的问题
- bash - 在 MacOS Mojave 中找不到 ntpdate 命令