标签: conditional-statements

是否有一个函数来过滤包含字符串的行,但在 R 中包含给定字符串的选定列名称上?

我会尽量具体。我从 Web 应用程序中获取了大量数据集。我下载的每个数据集的列数可能会有所不同。我想过滤我的数据以查找异常值。所以我准备了一个清单:

outl <- c("God","Devil","Priest")
Run Code Online (Sandbox Code Playgroud)

现在让我们假设这是我的 df:

ID <- c(1,2,3,4)
Actor1<- c("Driver","","","")
Actor2<- c("President","Zombie","","")
Actor3<- c("CEO","Devil","","")
Actor4<-c("Priest","","Killer","Mayor")
Leng<- c(12,42,42,22)
Genre<-c("horror","criminal","drama","comedy")
df_ex <-data.frame(ID, Actor1, Actor2, Actor3, Actor4, Leng, Genre)
Run Code Online (Sandbox Code Playgroud)

我想过滤包含名称为“Actor”的任何列中异常值名称的行 ID(可能有 100 个,这就是为什么我不能使用 OR 运算符执行此操作的原因),例如:

df_ex %>%
  filter(*anycolumn that contains string "Actor"* %in% outl)
Run Code Online (Sandbox Code Playgroud)

我希望得到 ID 为 1 和 2 的行

希望这足够清楚,提前致谢

r filter multiple-columns conditional-statements

1
推荐指数
1
解决办法
59
查看次数

为什么 Perl “不匹配”运算符在这里不起作用?

我有以下 Perl 代码:

my $athCombined = "$athSymbol $athExpiration $athStrike $athType";
if (($instrumentType eq "STOCK" && $cbSymbol ne $athSymbol) ||
    ($instrumentType eq "OPTION" && $cbSymbol !~ /^$athSymbol.*$athExpiration $athStrike $athType$/) ||
    ($instrumentType eq "FUTURESOPTION" && $cbSymbol !~ /^$athCombined$/)) {
    print "ERROR: Symbols on lines $cbLineNum and $athLineNum don't match.  ABORTING.\n";
    print "instrumentType    =$instrumentType\n";
    print "cbSymbol          =$cbSymbol\n";
    print "athCombined       =$athCombined\n";
    print "length cbSymbol   =" . length($cbSymbol) . "\n";
    print "length athCombined=" . length($athCombined) . "\n";
    if ($instrumentType eq "FUTURESOPTION") {
        print "YES1\n";
    } …
Run Code Online (Sandbox Code Playgroud)

regex string perl conditional-statements

1
推荐指数
1
解决办法
84
查看次数

如何填写缺少的NAN?

我想[1 nan 1 2 2 nan nan 3 nan 4 nan nan 5]变成[1 1.5 1 2 2 2 3 3 3.5 4 4 5 5]. 如果只有一个 NAN,我希望用前后数字的平均值填充 NAN。如果有多个 NAN。我希望用最近的数字填充 NAN。

到目前为止,我只有找到单个 NAN 的代码:

max_x = x(:, 2);
min_x = x(:, 3);

for jj = 1:length(max_x)
    for kk = 1:length(min_x)
        if isnan(max_x(jj))
            max_x (jj) = ((max_x(jj-1)+max_x(jj+1))/2);
        elseif isnan (min_x(kk))
            min_x (kk) = ((min_x(kk-1)+min_x(kk+1))/2);
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

我如何填写不是单身的 NAN?

非常感谢。

matlab if-statement nan user-defined-functions conditional-statements

1
推荐指数
1
解决办法
112
查看次数

警告:Ansible 评估裸变量。我该如何正确实施?

我的 Ansible 条件语句没有正确评估。

- name: A
  shell:
    cmd: /usr/local/bin/is_A_OK #returns bash true or false (not strings)
  register: is_A_OK

- name: B
  shell:
    cmd: /usr/local/bin/is_B_OK 
  register: is_B_OK

- name: reboot if both are OK
  reboot:
  when:
    - is_A_OK
    - is_B_OK
Run Code Online (Sandbox Code Playgroud)

[弃用警告]:将 'is_A_ok' 评估为一个裸变量,此行为将消失,将来您可能需要将 |bool 添加到表达式中。另请参阅 CONDITIONAL_BARE_VARS 配置切换。此功能将在 2.12 版中删除。

但是,逻辑工作正常,并且在两个变量都为真时执行重新启动。但我不能保持原样,因为此功能将在 2.12 版中删除。

仅供参考,bash 脚本的结论如下:

if [[ "$my_var" == true ]]; then
    true
else
    false
fi
Run Code Online (Sandbox Code Playgroud)

我正在运行 Arch Linux,所以 bash 是新的。

警告加上 ansible文档让我认为这是正确的:

- name: reboot if OK
  reboot:
  when: …
Run Code Online (Sandbox Code Playgroud)

conditional-statements ansible

1
推荐指数
1
解决办法
1169
查看次数

在循环条件中,i&lt;sqrtN(预先计算)或 i*i&lt;N,在 C++ 中哪个更有效?

假设对于给定的整数 N,我需要运行 N 次的循环平方根。

在 C++ 中,我可以通过这两种方式来做到这一点——

1)

long long sqrtN = std::sqrt(N);
for (long long i=1; i < sqrtN; i++) {
    // some piece of code
}
Run Code Online (Sandbox Code Playgroud)
for (long long i=1; i * i < N; i++) {
    // some same piece of code
}
Run Code Online (Sandbox Code Playgroud)

我发现 std::sqrt() 具有 O(logn) 复杂度。另外,我相信数字的乘法只是一个常数时间运算。

所以,感觉第2个版本更快。但是,对于非常大的 n 值,第二个版本中的恒定时间可能很重要。

因此,我不确定哪种方式更有效?

c++ loops conditional-statements

1
推荐指数
1
解决办法
97
查看次数

在 C++ 中,分支预测器是否预测隐式条件语句?

在这段代码中,它被写成result += runs[i] > runs[i-1];一个隐式条件语句。在 C++ 中,分支预测器是否对该语句进行预测?或者我是否必须明确使用if关键字来进行分支预测?

using namespace std; 
int progressDays(vector<int> runs) {
    if (runs.size() < 2) {return 0;}
    int result = 0;
    for (int i = 1; i < runs.size(); i++) {result += runs[i] > runs[i-1];}
    return result;
}
Run Code Online (Sandbox Code Playgroud)

c++ syntax conditional-statements branch-prediction

1
推荐指数
1
解决办法
241
查看次数

使条件运算符的行为类似于 C 中的 if/else 语句

是否可以让?:操作员处理以下示例中的多个语句?

condition ? FirstTrueExpression SecondTrueExpression : FirstFalseExpression SecondFalseExpression
Run Code Online (Sandbox Code Playgroud)

有没有办法避免指定“else”语句?

condition ? TrueExpression
Run Code Online (Sandbox Code Playgroud)

c conditional-operator conditional-statements

1
推荐指数
1
解决办法
96
查看次数

为什么在以下情况下使用赋值运算符而不是等于运算符有效?

您应该有一个条件,该条件应评估为真或假,以使if语句起作用。我不明白p=fopen("test.txt", "r")以下代码的一部分如何计算为真或假,因为它只包含一个赋值运算符=而不是一个==运算符。

#include <stdio.h>
int main()
{
  FILE *p;
  if(p=fopen("test.txt","r"))
  {
      printf("yes\n");
  }
  else
    printf("no\n");
  return 0;
Run Code Online (Sandbox Code Playgroud)

c if-statement selection conditional-statements

1
推荐指数
1
解决办法
74
查看次数

仅当它是 JSON 时才通过 jq 管道输出

我有以下 BASH 代码:

    response=$( curl -Ls $endpoint )
    if [ -n "$response" ]; then  # nonempty
        echo "$response"  | jq .
    fi
Run Code Online (Sandbox Code Playgroud)

问题是有时响应可以是非空的,但不是 JSON(如果它不是 200)。

jq如果输出是有效的 JSON,是否可以通过管道传输输出?

以下工作:

echo $x | jq . 2>/dev/null  || echo $x
Run Code Online (Sandbox Code Playgroud)

测试:

> x='{"foo":123}'; echo $x | jq . 2>/dev/null || echo "Invalid: $x"
{
  "foo": 123
}

> x='}'; echo $x | jq . 2>/dev/null || echo "Invalid: $x"
Invalid: }
Run Code Online (Sandbox Code Playgroud)

但是,我对此感到不舒服。

bash curl conditional-statements jq

1
推荐指数
1
解决办法
235
查看次数

lapply 和 ifelse 一起没有按预期工作

我正在写一篇关于 R 的文档,我想出了一个我无法理解的例子。让我们这样说:

mylist <- list(8, 1:10, c(4,7,25), matrix(1:30, ncol = 5), "my name is not Donald")
lapply(1:length(mylist), function(x) ifelse(is.numeric(mylist[[x]]), 
  mylist[[x]]*2, mylist[[x]]))
Run Code Online (Sandbox Code Playgroud)

我本来希望我的列表中的数字元素是 2-fold 并且字符向量保持原样。相反,列表中数字元素的结果只是每个元素的第一个组件,就好像 ifelse 的 TRUE 条件(即 1)已经接管了 lapply 的 x 索引。谁能告诉我这背后的逻辑,我应该输入什么?非常感谢。最好的,大卫

r conditional-statements lapply

1
推荐指数
1
解决办法
50
查看次数