小编Wal*_*cio的帖子

R舍入解释

任何人都可以解释为什么这会给出不同的输出?

round(1.49999999999999)
1


round(1.4999999999999999)
2
Run Code Online (Sandbox Code Playgroud)

我已经阅读了圆形文档,但它没有提到它的任何内容.我知道R代表二进制形式的数字,但为什么增加两个额外的9会改变结果呢?

谢谢.

r

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

如何从Google Maps API获取驾驶时间?

假设平均速度为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​​很新,并且被所有文本所淹没.感谢任何帮助!

xml r google-maps-api-3 driving-distance

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

有没有 R 函数可以检索 CPU 和 RAM 信息?

我想在 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()是依赖于操作系统的。

r system-information

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

如何在R中堆叠多个矩阵

我有一个矩阵列表,类似于下面的代码获得的矩阵:

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)

诀窍在于我事先并不知道需要加入多少个矩阵.有没有一种很好的方法来编写将所有矩阵堆叠在列表中的代码?

r matrix

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

连接gsub

我目前正在运行以下代码来清除重音符号中的数据:

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)

但是,我想在一行中完成它(使用另一个函数就可以了).我怎样才能做到这一点?

regex optimization r gsub

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

如何在python中包含引号?

预期结果:

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)

我的代码的第二行需要帮助!

python quotes

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

如何检测所有大写字母中的字符串并将其转换为start case

说我有以下矢量

x <- c('One', 'TWO', 'THREE / FOUR')
Run Code Online (Sandbox Code Playgroud)

我想转换TWOTHREE / FOURTwoThree / 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)

regex string r

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

当大物体填满屏幕时暂停打印

假设我想在R中打印一个大对象,例如

x <- 1:2e3
Run Code Online (Sandbox Code Playgroud)

当我打印时x,R控制台用它的元素填充屏幕,因为它不适合屏幕上的全部,它将向下滚动.然后我必须向上滚动以查看屏幕上的所有内容.

我想要的是有一个命令,x当屏幕填充时会打印和停止,要求用户做某事(如按下enter),以便显示另一个显示数据的屏幕.我想到的是类似于MS DOS的dir /p命令.有这样的事吗?

正如@baptiste所建议的,这个解决方案page(x, method = 'print')并没有真正解决我的问题.更清楚的是,我想要的是一种不涉及在另一个窗口中打印对象的解决方案,因为这会破坏我的工作流程.如果我不关心这个,我会使用View()或类似的东西.

r rstudio

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

R 无法在 ff 过程上分配内存。怎么会?

我正在使用配备 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)

csv memory-management r large-data ff

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

如何使用 utils::globalVariables

按照您的建议(或至少尝试这样做),我尝试了一些选择,但问题仍然存在,所以一定是我遗漏了什么。

我已经包含了一个更完整的代码

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 的建议和我在互联网上找到的一个例子。 …

r global-variables r-package

3
推荐指数
3
解决办法
2578
查看次数