我有一个存储字符串的数据框,其中一些字符串可以解释为数字,但是,它们仍然是类字符。我想自动将所有可以解释为数字的列转换为数字。我可以使用 mutate_if 轻松完成此操作,但是它会为每个剩余的字符列生成 NA。我想保留这些栏中的原始信息。
\n# Reproducible example\ndf <- data.frame(Col1 = c("647", "237", "863", "236"),\n Col2 = c("125", "623", "854", "234"),\n Col3 = c("ABC", "BCA", "DFL", "KFD"),\n Col4 = c("PWD", "CDL", "QOW", "DKC"))\n\ndf %>% mutate_if(is.character, as.numeric)\n\n Col1 Col2 Col3 Col4\n1 647 125 NA NA\n2 237 623 NA NA\n3 863 854 NA NA\n4 236 234 NA NA\nWarning messages:\n1: Problem while computing `..1 = across(, ~as.numeric(.))`.\n\xe2\x84\xb9 NAs introduced by coercion \n2: Problem while computing `..1 = across(, ~as.numeric(.))`.\n\xe2\x84\xb9 NAs introduced by coercion …Run Code Online (Sandbox Code Playgroud) C 标准/编译器如何将负整数解释为单个文字,或解释为(一元)运算符和数字文字?
例如,被-16解释为 a-16或-(16)?
我用来比较两个列表,一个列表包含数值%in%向量,另一个列表包含相应的整数值。结果真的很奇怪;有时有时,我不明白为什么。TRUEFALSE
例如下面的代码给出TRUE
list(c(1, 1)) %in% list(c(1L, 1L))
Run Code Online (Sandbox Code Playgroud)
但是,如果我们将向量中的第二个数字更改为 2 和 2L,我们会得到FALSE
list(c(1, 2)) %in% list(c(1L, 2L))
Run Code Online (Sandbox Code Playgroud)
将第二个数字更改为 3 或 4TRUE再次给出。
list(c(1, 3)) %in% list(c(1L, 3L))
list(c(1, 4)) %in% list(c(1L, 4L))
Run Code Online (Sandbox Code Playgroud)
再次使用其他一些值会产生结果FALSE,但我看不到任何模式。例如,使用 8 和 9 结果为FALSE:
list(c(8, 9)) %in% list(c(8L, 9L))
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会这样?这真的令人困惑,我完全不明白为什么会发生这种情况。
似乎简单的比较符号>,>=及其反向组件可以评估某个变量是否为数字.例$whatami='beast'; ($whatami<0)?echo 'NaN':echo 'is numeric!';
是否存在正值(数量> 0)is_numeric()需要使用的情况?似乎使用上面的比较符号将确定变量是否为数字.
我正在用Java中的数字转换和强制转换进行一些测试,我发现这种奇怪的行为(对我而言)
class Test {
public static void main(String[] args) {
//int y = 100000000000000; //does not compile
int x = 100000 * 1000000000; //compile (why?)
System.out.println(x); //x is 276447232
}
}
Run Code Online (Sandbox Code Playgroud)
基本上x和y应该是相同的数字:为什么编译?
我有以下数据:
yvar <- c(1:150)
replication <- c( rep(c(rep(1, 10), rep(2,10), rep(3,10)),5))
genotypes <- c(rep(paste("G", 1:10, sep= ""), 15))
environments <- c(rep(paste("E",5:1, sep = ""), each = 30))
mydf1 <- data.frame (yvar, replication, genotypes, environments)
mydf1$replication <- as.factor(mydf1$replication)
Run Code Online (Sandbox Code Playgroud)
我想总结一下数据:
mydf = data.frame(aggregate (yvar ~ genotypes + environments, data = mydf1, mean))
Run Code Online (Sandbox Code Playgroud)
现在创建一个矩阵,希望是数字,matm不是!
matm = as.matrix(aggregate(yvar ~ genotypes, mydf, 'c'))
colnames(matm) <- c("genotypes", levels(mydf$environments))
genotypes E1 E2 E3 E4 E5
[1,] "G1" "131" "101" " 71" " 41" " 11"
[2,] "G10" …Run Code Online (Sandbox Code Playgroud) FormatTime, CurrentMinute , , m将当前分钟分配给variable %CurrentMinute%,其值是一个字符串,而不是数字。我想对价值进行一些计算%CurrentMinute%,那么如何将其转换为数字呢?
感谢您的任何帮助!
打开gcc优化的简单方法是添加-0#到编译器选项.很有诱惑力-O3.但是,我知道-O3包括优化,这是非保存的,因为一旦包含此选项,数值计算的结果可能会有所不同.如果算法稳定,结果的微小变化可能是微不足道的.另一方面,精度可能是某些数学运算的问题,因此数学优化会产生重大影响.
我发现在调试过程中考虑编译器相关问题是不方便的.即我不想知道代码中的微小变化是否会导致强烈不同的行为,因为编译器在内部更改了它的优化.
如果我想在我的代码中使用确定性(因此可控制)行为,哪些选项可以安全添加?这几乎是安全的,也就是说,哪些选项与性能优势相比只会产生微小的不确定性?
我想到了这样的选项:-finline -finline-limit=2000即使它们很长,也会内联函数.
我正在开发一个WinForms应用程序,它接受数字字符串作为输入.如果我的用户输入了连续的数字范围,他/她可以使用如下的速记符号表示该范围:
12[3-5]5550[000-100]
Run Code Online (Sandbox Code Playgroud)
使用该示例,我需要将该字符串扩展为它包含的整个数字范围,如下所示:
1235550000
1235550001
1235550002
..........
1235550100
1245550000
1245550001
1245550002
..........
1245550100
1255550000
1255550001
1255550002
..........
1255550100
Run Code Online (Sandbox Code Playgroud)
除0-9外,字符串仅包含[, - 和],它们是用于表示范围的字符.作为将示例字符串扩展为单个数字的过程的一部分,我也想验证字符串.例如,必须有相同数量的[和]字符.在括号内,范围中的第一个数字必须小于范围中的第二个数字.这些类型的东西.
是否存在执行此类字符串操作的现有模式?
我已经查看了很多关于舍入到最接近的数字的倍数的问题,但是我无法理解它们的方法以便将它们用于四舍五入或者使用其他语言的语言特定方法.
如果以上内容没有多大意义,这里有一个更详细的解释:
输入示例:
int num1 = 67;
int num2 = 43;
Run Code Online (Sandbox Code Playgroud)
预期成绩:
>>round(num1) = 90
>>round(num2) = 45
Run Code Online (Sandbox Code Playgroud)