我创建了一个处理我的一些数据的函数,如下所示:
a <- "old"
test <- function (x) {
assign(x, "new", envir = .GlobalEnv)
}
test(a)
Run Code Online (Sandbox Code Playgroud)
但我看不出从"旧"到"新"的变化,我猜这是一些"全局变量",有什么建议吗?
谢谢!
我有数据集,负数值用数字括号表示,即(10)==-10它是csv格式,我该如何处理它以便R将其解释(10)为-10?谢谢.
更新我知道我可以通过替换(as -,删除)和as.numeric之后使用来解决这个问题,但这个问题有更优雅的方法吗?
假设我有如下字符串:
<a>b<c>
Run Code Online (Sandbox Code Playgroud)
我想删除这两个<a>和<c>的,但我不能使用gsub("<.*>","","<a>b<c>"),因为这将删除b也.
我之前问了一个类似的问题,但是在第二个想法中,我想我应该总体上学习如何处理这类问题.谢谢.
我一直在使用创建数据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)
line01并line02显示ddd.old可以找到每一行,ddd.new反之亦然.line03表明hash两个数据帧的列都相同line04 表明两个数据帧是不同的 …我参考了我之前的问题,想了解更多关于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)不是。
如果我想添加一些数学注释作为因子,我该怎么办?
我正在对存储在 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)
有没有更好的方法来做到这一点?谢谢!
我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) 我在办公室使用奔腾4 HT机器运行R,一些代码需要plyr包,我通常需要等待6-7分钟才能让脚本完成运行,而我看到我的处理器只用了一半.
我听说在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进行逐行哈希处理的任何线索?谢谢!