私はDataCampでデータサイエンスコースを進めています。 (未プラグ。)練習の教訓の一つは、以下の完了ソリューションがあります:それは関係なく、すべてのログエントリを(含むベクトルを返しますし、私はそれを期待するとして、最初の呼び出し(extract_info(logs)
)が働くこのRは、なぜ短絡が適切に機能しないのですか?
# logs is available in your workspace
extract_info <- function(x, property = "success", include_all = TRUE) {
info <- c()
for (log in x) {
if (include_all || !log$success) {
info <- c(info, log[[property]])
}
}
return(info)
}
# Call extract_info() on logs, no additional arguments
extract_info(logs)
# Call extract_info() on logs, set include_all to FALSE
extract_info(logs, include_all = FALSE)
をlog$success
の値)。
2回目の呼び出し(extract_info(logs, include_all = FALSE)
)は、私が期待する結果を返しません。 log$success
がFALSE
と評価された結果のみを含むベクトルを返します。
||
演算子を使用すると、ifブロックが短絡し、2回目の呼び出しでが返されないと思われます。。私が知ることから、Rは式を左から右に評価します。これは右から左に評価されているように見えます。
誰かがここで何が起こっているのか説明できますか?
(このサイトによれば、これは正しい解決策であり、コードには何も問題はありません)なぜそれが動作するのかを知りたいのですが、答えが痛いほど明白です。
|| ORである。いずれかの条件がTRUEの場合、TRUEと評価されます。したがって、include_allがFALSEであるからといって、それを停止する必要はありません。 ANDについて考えていますか? – G5W
私はここに深刻な精神的な故障があります。これは私が週末を通して勉強するためのものです。彼らのうちのどれかが偽りで、保釈されているのではない。いずれかがTRUEであれば実行します。あなたはそれを私の答えに入れてください。 –