任何人都可以解释为什么这会给出不同的输出?
round(1.49999999999999)
1
round(1.4999999999999999)
2
Run Code Online (Sandbox Code Playgroud)
我已经阅读了圆形文档,但它没有提到它的任何内容.我知道R代表二进制形式的数字,但为什么增加两个额外的9会改变结果呢?
谢谢.
假设平均速度为65 km/h,我使用以下函数估算行驶一定距离的时间(以小时为单位):
distHoras <- function(origin, destination){
xml.url <- paste0('http://maps.googleapis.com/maps/api/distancematrix/xml?origins=',
origin, '&destinations=', destination, '&mode=driving&sensor=false')
xmlfile <- xmlParse(getURL(xml.url))
dist <- xmlValue(xmlChildren(xpathApply(xmlfile,"//distance")[[1]])$value)
distance <- as.numeric(sub(" km", "", dist))
time <- (distance / 1000) / 65
return(time)
}
Run Code Online (Sandbox Code Playgroud)
我如何调整此函数以使其直接产生时间,因此我不需要进行65 km/h的假设,从而得到更好的估计?阅读文档后,我尝试将'distance'切换为'duration',但它没有用.我可能错过了一些简单的东西,但我对使用API很新,并且被所有文本所淹没.感谢任何帮助!
我想在 R 会话中打印一些硬件信息。我可以通过使用该system()函数来实现此目的,在我的 Linux 机器中该函数如下所示:
> system("lscpu | grep 'Model name:'")
Model name: Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz
> system("lsmem | grep 'Total online memory'")
Total online memory: 16G
Run Code Online (Sandbox Code Playgroud)
我知道R有类似Sys.info()提供此类数据的功能,但我找不到这样一个允许打印CPU和RAM信息的功能。
我真的很想找到一个这样的功能,因为依赖system()是依赖于操作系统的。
我有一个矩阵列表,类似于下面的代码获得的矩阵:
a <- matrix(1, ncol=2, nrow=3)
b <- matrix(2, ncol=2, nrow=3)
c <- matrix(3, ncol=2, nrow=3)
d <- list(a, b, c)
Run Code Online (Sandbox Code Playgroud)
我想堆叠它们,使它们在一个矩阵中,类似于这个:
e <- rbind(d[[1]], d[[2]], d[[3]])
Run Code Online (Sandbox Code Playgroud)
诀窍在于我事先并不知道需要加入多少个矩阵.有没有一种很好的方法来编写将所有矩阵堆叠在列表中的代码?
我目前正在运行以下代码来清除重音符号中的数据:
df <- gsub('Á|Ã', 'A', df)
df <- gsub('É|Ê', 'E', df)
df <- gsub('Í', 'I', df)
df <- gsub('Ó|Õ', 'O', df)
df <- gsub('Ú', 'U', df)
df <- gsub('Ç', 'C', df)
Run Code Online (Sandbox Code Playgroud)
但是,我想在一行中完成它(使用另一个函数就可以了).我怎样才能做到这一点?
预期结果:
What is your name? *name*
So your name is 'name' huh?
Run Code Online (Sandbox Code Playgroud)
代码:
name = input("What is your name? ")
print('So your name is ' , 'name' ,'?')
Run Code Online (Sandbox Code Playgroud)
我的代码的第二行需要帮助!
说我有以下矢量
x <- c('One', 'TWO', 'THREE / FOUR')
Run Code Online (Sandbox Code Playgroud)
我想转换TWO和THREE / FOUR对Two和Three / Four分别.我已经看了一下casefold()整个chartr()帮助页面,但无法弄清楚这一点.
在我真正的问题中,我有一个1500字符串的向量,我打算在其中检测以全部大写字母写的条目(我知道它们中的许多都包含斜线,就像上面示例中的斜杠一样)并将它们转换为start case.
我可以做的一件事是运行grepl('^[A-Z]+$', x)(由tenub建议),但它没有检测到THREE / FOUR全部大写(它产生[1] FALSE TRUE FALSE).从我所看到的,只有空间的存在足以让这种回归FALSE.
删除锚点grepl('[A-Z]+$', x)(由TheGreatCO建议)适用于上面的示例,但在下一个示例中失败:
y <- "Imposto Territorial Rural - ITR"
grepl('[A-Z]+', y)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
此外,无论我尝试什么,包含重音符号的元素总是被遗漏:
z <- c('Á')
grepl('[A-Z]+', z)
[1] FALSE
Run Code Online (Sandbox Code Playgroud) 假设我想在R中打印一个大对象,例如
x <- 1:2e3
Run Code Online (Sandbox Code Playgroud)
当我打印时x,R控制台用它的元素填充屏幕,因为它不适合屏幕上的全部,它将向下滚动.然后我必须向上滚动以查看屏幕上的所有内容.
我想要的是有一个命令,x当屏幕填充时会打印和停止,要求用户做某事(如按下enter),以便显示另一个显示数据的屏幕.我想到的是类似于MS DOS的dir /p命令.有这样的事吗?
正如@baptiste所建议的,这个解决方案page(x, method = 'print')并没有真正解决我的问题.更清楚的是,我想要的是一种不涉及在另一个窗口中打印对象的解决方案,因为这会破坏我的工作流程.如果我不关心这个,我会使用View()或类似的东西.
我正在使用配备 Intel Xeon 处理器和 24 GB RAM 的 64 位 Windows Server 2008 计算机。我在尝试读取 11 GB(>2400 万行,20 列)的特定 TSV(制表符分隔)文件时遇到问题。我平常的伙伴,read.table让我失望了。ff我目前正在通过以下过程尝试该软件包:
> df <- read.delim.ffdf(file = "data.tsv",
+ header = TRUE,
+ VERBOSE = TRUE,
+ first.rows = 1e3,
+ next.rows = 1e6,
+ na.strings = c("", NA),
+ colClasses = c("NUMERO_PROCESSO" = "factor"))
Run Code Online (Sandbox Code Playgroud)
这对于大约 600 万条记录来说效果很好,但随后我收到了一个错误,如您所见:
read.table.ffdf 1..1000 (1000) csv-read=0.14sec ffdf-write=0.2sec
read.table.ffdf 1001..1001000 (1000000) csv-read=240.92sec ffdf-write=67.32sec
read.table.ffdf 1001001..2001000 (1000000) csv-read=179.15sec ffdf-write=94.13sec
read.table.ffdf 2001001..3001000 (1000000) csv-read=792.36sec ffdf-write=68.89sec
read.table.ffdf …Run Code Online (Sandbox Code Playgroud) 按照您的建议(或至少尝试这样做),我尝试了一些选择,但问题仍然存在,所以一定是我遗漏了什么。
我已经包含了一个更完整的代码
setwd("C:/naapp")
#' @import utils
#' @import devtools
Run Code Online (Sandbox Code Playgroud)
我曾尝试使用和不使用抑制外来检查
if(getRversion() >= "2.15.1"){
utils::globalVariables(c("eleven"))
utils::suppressForeignCheck(c("eleven"))
}
myFunctionSum <- function(X){print(X+eleven)}
myFunctionMul <- function(X){print(X*eleven)}
myFunction11 <- function(X){
assign("eleven",11,envir=environment(myFunctionMul))
}
Run Code Online (Sandbox Code Playgroud)
也许我应该使用特定的环境?
package.skeleton(name = "myPack11", list=ls(),
path = "C:/naapp", force = TRUE,
code_files = character())
Run Code Online (Sandbox Code Playgroud)
我从目录 myPack11 中删除了“man”目录,否则我会因为帮助文件为空而收到错误消息。我在描述中添加了导入工具和开发工具
然后我运行检查
devtools::check("myPack11")
Run Code Online (Sandbox Code Playgroud)
我仍然收到这张纸条
#checking R code for possible problems ... NOTE
#myFunctionMul: no visible binding for global variable 'eleven'
#myFunctionSum: no visible binding for global variable 'eleven'
#Undefined global functions or variables:eleven
Run Code Online (Sandbox Code Playgroud)
我也尝试制作一个环境,结合 Tomas Kalibera 的建议和我在互联网上找到的一个例子。 …