小编lok*_*art的帖子

R函数中的全局变量

我创建了一个处理我的一些数据的函数,如下所示:

a <- "old" 
test <- function (x) {
   assign(x, "new", envir = .GlobalEnv)
} 
test(a)
Run Code Online (Sandbox Code Playgroud)

但我看不出从"旧"到"新"的变化,我猜这是一些"全局变量",有什么建议吗?

谢谢!

variables r function

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

处理"会计"格式的负数

我有数据集,负数值用数字括号表示,即(10)==-10它是csv格式,我该如何处理它以便R将其解释(10)-10?谢谢.

更新我知道我可以通过替换(as -,删除)as.numeric之后使用来解决这个问题,但这个问题有更优雅的方法吗?

finance r negative-number

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

使用R中的gsub删除一对括号内的任何内容

假设我有如下字符串:

<a>b<c>
Run Code Online (Sandbox Code Playgroud)

我想删除这两个<a><c>的,但我不能使用gsub("<.*>","","<a>b<c>"),因为这将删除b也.

我之前问了一个类似的问题,但是在第二个想法中,我想我应该总体上学习如何处理这类问题.谢谢.

regex r

5
推荐指数
2
解决办法
2070
查看次数

使用哈希来确定2个数据帧是否相同(第01部分)

我一直在使用创建数据WHO ATC/DDD指数前几个月,我要确保,如果数据库联机今天保持不变,所以我重新下载,并尝试使用该digest软件包中的R做比较.

这两个数据集(格式为txt)可以在这里下载.(我知道您可能认为文件不安全并且可能有病毒,但我不知道如何生成虚拟数据集来复制我现在的问题,所以我最后上传了数据集)

我写了一个小脚本如下:

library(digest)

ddd.old <- read.table("ddd.table.old.txt",header=TRUE,stringsAsFactors=FALSE)
ddd.new <- read.table("ddd.table.new.txt",header=TRUE,stringsAsFactors=FALSE)


ddd.old[,"ddd"] <- as.character(ddd.old[,"ddd"])
ddd.new[,"ddd"] <- as.character(ddd.new[,"ddd"])

ddd.old <- data.frame(ddd.old, hash = apply(ddd.old, 1, digest),stringsAsFactors=FALSE)
ddd.new <- data.frame(ddd.new, hash = apply(ddd.new, 1, digest),stringsAsFactors=FALSE)

ddd.old <- ddd.old[order(ddd.old[,"hash"]),]
ddd.new <- ddd.new[order(ddd.new[,"hash"]),]
Run Code Online (Sandbox Code Playgroud)

当我进行检查时会发生一些非常有趣的事情:

> table(ddd.old[,"hash"]%in%ddd.new[,"hash"]) #line01

TRUE 
 506 
> table(ddd.new[,"hash"]%in%ddd.old[,"hash"]) #line02

TRUE 
 506 
> digest(ddd.old[,"hash"])==digest(ddd.new[,"hash"]) #line03
[1] TRUE
> digest(ddd.old)==digest(ddd.new) #line04
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
  • line01line02显示ddd.old可以找到每一行,ddd.new反之亦然.
  • line03表明hash两个数据帧的列都相同
  • line04 表明两个数据帧是不同的 …

hash r

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

使用数学注释作为 R 中的因素

我参考了我之前的问题,想了解更多关于factorR中的特性。

假设我有一个这样的数据集:

temp <- data.frame(x=letters[1:5],
                   y=1:5)
plot(temp)
Run Code Online (Sandbox Code Playgroud)

我可以轻松地将 的标签更改x为另一个字符:

levels(temp[,"x"]) <- letters[6:10]
Run Code Online (Sandbox Code Playgroud)

但如果我想把它改成一些expression

levels(temp[,"x"]) <- c(expression(x>=1),
                        expression(x>=2),
                        expression(x>=3),
                        expression(x>=4),
                        expression(x>=5))
Run Code Online (Sandbox Code Playgroud)

>=图中的符号不​​会相应改变。我发现这class(levels(temp[,"x"]))character,但expression(x>=1)不是。

如果我想添加一些数学注释作为因子,我该怎么办?

expression r r-factor

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

创建连续整数,然后使用 dplyr 创建存储在 sqlserver 中的表的索引

我正在对存储在 sqlserver 中的一些大表进行一些数据处理,这些表创建索引有时会减少运行某些 R 脚本所需的时间。我尝试使用 的mutate功能dplyr创建一个idx具有连续编号的新列 ( ),然后将该idx列用作索引。但是 mutate 功能似乎不起作用并且不断给我这个错误:

> tbl(channel,'tbl_iris') %>% mutate(idx=1:n())
Error in from:to : NA/NaN argument
In addition: Warning message:
In 1:n() : NAs introduced by coercion\
Run Code Online (Sandbox Code Playgroud)

现在我正在做一些对我来说似乎很愚蠢的事情,以“绕过”上述错误消息:

iris <- tbl(channel,'tbl_iris') %>% 
  collect %>%
  mutate(idx=1:n())

try(db_drop_table(channel,'##iris'))
copy_to(channel,iris,'##iris',temporary=FALSE)
db_create_index(channel,'##iris',columns='idx')
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点?谢谢!

更新 01

mutate(idx = row_number())按照@Phil 的建议进行了尝试,但它不起作用并显示以下错误消息:

> tbl(channel,'##iris') %>%
+   mutate(idx=row_number())
Error: <SQL> 'SELECT  TOP 10 "Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species", row_number() OVER () AS "idx"
FROM …
Run Code Online (Sandbox Code Playgroud)

indexing r dplyr

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

在R中使用Multicore用于Pentium 4 HT机器

我在办公室使用奔腾4 HT机器运行R,一些代码需要plyr包,我通常需要等待6-7分钟才能让脚本完成运行,而我看到我的处理器只用了一半.

我听说在R中使用多核软件包以更好地利用多核处理器,我的情况是否合适?

谢谢!

multicore r

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

如何在R中列出一部分对象?

我想列出R中以某些东西开头的所有对象,比如以字符"A"开头,我只知道如何使用ls(),有没有办法这样做?谢谢!

r list

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

如何在Stata中的另一个ado文件中运行ado文件?

在R中,我可以使用另一个R脚本

source("script.R")
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Stata中做同样的事情?

stata

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

使用dplyr和R中的摘要向每行添加哈希

我需要向数据集中的每一行添加一个指纹,以便与同一组的更高版本进行检查以寻找差异。

我知道如何为R中的每一行添加哈希,如下所示:

data.frame(iris,hash=apply(iris,1,digest))
Run Code Online (Sandbox Code Playgroud)

我正在学习使用,dplyr因为数据集越来越大,我需要将它们存储在SQL Server中,我尝试了以下类似操作,但是哈希无法正常工作,所有行都提供相同的哈希值:

iris %>%
  rowwise() %>%
  mutate(hash=digest(.))
Run Code Online (Sandbox Code Playgroud)

关于使用dplyr进行逐行哈希处理的任何线索?谢谢!

r digest dplyr

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