我会尽量具体。我从 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 的行
希望这足够清楚,提前致谢
我有以下 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) 我想[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
我的 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) 假设对于给定的整数 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 值,第二个版本中的恒定时间可能很重要。
因此,我不确定哪种方式更有效?
在这段代码中,它被写成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) 是否可以让?:操作员处理以下示例中的多个语句?
condition ? FirstTrueExpression SecondTrueExpression : FirstFalseExpression SecondFalseExpression
Run Code Online (Sandbox Code Playgroud)
有没有办法避免指定“else”语句?
condition ? TrueExpression
Run Code Online (Sandbox Code Playgroud) 您应该有一个条件,该条件应评估为真或假,以使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) 我有以下 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)
但是,我对此感到不舒服。
我正在写一篇关于 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 索引。谁能告诉我这背后的逻辑,我应该输入什么?非常感谢。最好的,大卫