小编Mat*_*ker的帖子

R中的数字比较难度

我试图比较R中的两个数字作为if语句条件的一部分:

(a-b) >= 0.5

在这个特定的例子中,a = 0.58和b = 0.08 ......但仍然(a-b) >= 0.5是假的.我知道使用==确切数字比较的危险,这似乎有关:

(a - b) == 0.5) 是假的,而

all.equal((a - b), 0.5) 是真的.

我能想到的唯一解决方案是有两个条件:(a-b) > 0.5 | all.equal((a-b), 0.5).这有效,但这真的是唯一的解决方案吗?我应该=永远地宣誓比较运营商的家庭吗?

为清晰起见编辑:我知道这是一个浮点问题.更重要的是,我要问的是:我该怎么做呢?什么是处理R中大于或等于比较的合理方法,因为>=它不能真正被信任?

floating-point comparison r comparison-operators r-faq

42
推荐指数
4
解决办法
2万
查看次数

如何在R中交叉加入?

如何在R中实现交叉连接?我知道"merge"可以做内连接,外连接.但我不知道如何在R中实现交叉连接.

谢谢

r cross-join

25
推荐指数
6
解决办法
4万
查看次数

d3.js - 时间尺度上均匀分布的条形图

我正在d3.js中建立一个条形图,其中每个条形图代表一个月内的总结核病例.数据基本上由一个日期(最初为%Y-%m格式的字符串,但使用d3.time.format.parse解析)和一个整数组成.我希望轴标签相对灵活(仅显示年份边界,每个月标注等),但我也希望条形均匀分布.

当我使用日期刻度时,我可以获得灵活的轴标记:

var xScaleDate = d3.time.scale()
    .domain(d3.extent(thisstat, function(d) { return d.date; }))
    .range([0, width - margin.left - margin.right]);
Run Code Online (Sandbox Code Playgroud)

......但是由于每个月的天数不同(例如,2月和3月明显比其他月份更接近),酒吧的间距不均匀.我可以使用线性刻度获得均匀间距的条形:

var xScaleLinear = d3.scale.linear()
      .domain([0, thisstat.length])
      .range([0, width - margin.left - margin.right]);
Run Code Online (Sandbox Code Playgroud)

...但我无法弄清楚如何使用基于日期的轴标签.我已经尝试过同时使用两个刻度并仅从中生成一个轴xScaleDate,只是为了看看会发生什么,但是刻度自然不对齐.

有没有一种直截了当的方法来实现这一点,我错过了?

javascript charts axis d3.js

21
推荐指数
2
解决办法
1万
查看次数

悬停在SVG多边形上时不显示工具提示

我有一个科罗拉多州的SVG地图,每个县有多边形.我希望在鼠标悬停时弹出县名,但这不会发生.我的县也设置了改变填充悬停,这种情况正在发生.我不确定区别是什么.

这些只是标准的浏览器工具提示,在每个多边形的title属性中设置了预期的文本.

小提琴:http://jsfiddle.net/mmparker/sVbxT/4/

html svg tooltip

19
推荐指数
1
解决办法
1万
查看次数

最有效的子集化向量方法

我需要计算向量子集的均值和方差.让x是载体和y是用于观察是否是在该子集中的一个指标.哪个更有效:

sub.mean <- mean(x[y])
sub.var  <-  var(x[y])
Run Code Online (Sandbox Code Playgroud)

要么

sub      <- x[y]
sub.mean <- mean(sub)
sub.var  <-  var(sub)
sub      <- NULL
Run Code Online (Sandbox Code Playgroud)

第一种方法没有明确地创建新对象; 但这样做的通话meanvar做含蓄?或者它们是否存储了原始矢量?

第二个更快,因为它不必两次进行子集化吗?

我关注速度和大数据集的内存管理.

performance r

9
推荐指数
1
解决办法
168
查看次数

让foreach()和ggplot2相处融洽

我有一组调查数据,我想生成一个特定变量的图,按受访者的国家分组.到目前为止我编写的用于生成图的代码是:

countries <- isplit(drones, drones$v3)
foreach(country = countries) %dopar% {
  png(file = paste(output.exp, "/Histogram of Job Satisfaction in ", country$key[[1]], ".png", sep = ""))
  country.df <- data.frame(country)  #ggplot2 doesn't appreciate the lists nextElem() produces
  ggplot(country.df, aes(x = value.v51)) + geom_histogram()
  dev.off()
}
Run Code Online (Sandbox Code Playgroud)

真正离奇的事情是什么?我可以运行isplit(),设置country <- nextElem(countries),然后运行代码而不发送foreach行 - 并得到一个可爱的情节.如果我发送foreach,我会得到一些空白的.png文件.

在此先感谢您的帮助.

我绝对可以用标准的R循环来做到这一点,但我真的希望能够更好地掌握它foreach.

foreach r ggplot2

8
推荐指数
1
解决办法
897
查看次数

在R中将一天的分数转换为POSIX时间

我有一个数据集,它将日期时间编码为两个单独的变量.通常,我只是将它们粘贴在一起as.POSIXct并继续进行.但是,日期以字符串形式提供,一天中的时间为24小时 - 例如,下午12点为0.5,上午9:30为0.1458333等.

将小数天转换为时钟小时似乎并不那么棘手,但如果可能的话,我更愿意使用预先存在的函数.基础R中是否存在类似的东西?一套?

如果有任何用途,这是通过RODBC导入R的Excel(xlsx)时间字段.

编辑奇怪的是,在重新审视这个问题时,现在将时间读入POSIXct.不知道该怎么做.

excel datetime r

7
推荐指数
2
解决办法
3739
查看次数

如何使用遗传算法优化参数

我想在R中使用GA来优化eps-regression(SVR)中的三个参数(gamma,cost和epsilon).这就是我所做的.

library(e1071)
data(Ozone, package="mlbench")
a<-na.omit(Ozone)
index<-sample(1:nrow(a), trunc(nrow(a)/3))
trainset<-a[index,]
testset<-a[-index,]
model<-svm(V4 ~ .,data=trainset, cost=0.1, gamma=0.1, epsilon=0.1, type="eps-regression", kernel="radial")
error<-model$residuals
rmse <- function(error) #root mean sqaured error
{
  sqrt(mean(error^2))
}
rmse(error)
Run Code Online (Sandbox Code Playgroud)

在这里,我将cost,gamma和epsilon分别设置为0.1,但我不认为它们是最好的值.所以,我想使用遗传算法来优化这些参数.

GA <- ga(type = "real-valued", fitness = rmse,
         min = c(0.1,3), max = c(0.1,3),
         popSize = 50, maxiter = 100)
Run Code Online (Sandbox Code Playgroud)

在这里,我使用RMSE作为适应度函数.但我认为健身功能必须包括要优化的参数.但是,在SVR中,目标函数太复杂了,无法用R代码写出来,我试图找到它很长时间但无济于事.有人同时了解SVR和GA的人,有使用GA优化SVR参数的人,请帮帮我.请.

optimization r genetic-algorithm

7
推荐指数
1
解决办法
4646
查看次数

在R中更多的靶心绘图

我正在使用ggplot2在R中制作一些靶心图表.它们看起来令人愉快,每个人都非常高兴 - 除了他们想要在图表上绘制靶心层的值.我很高兴只是将它们放在情节的右下角,甚至是情节边缘,但我在做这件事时遇到了一些困难.

这是再次的示例数据:

critters <- structure(list(Zoo = "Omaha", Animals = 50, Bears = 10, PolarBears = 3), .Names = c("Zoo", 
"Animals", "Bears", "PolarBears"), row.names = c(NA, -1L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

以及如何绘制它:

d <- data.frame(animal=factor(c(rep("Animals", critters$Animals),
       rep("Bears", critters$Bears), rep("PolarBears", critters$PolarBears)),
       levels = c("PolarBears", "Bears", "Animals"), ordered= TRUE))
grr <- ggplot(d, aes(x = factor(1), fill = factor(animal))) +  geom_bar() +
  coord_polar() + labs(x = NULL, fill = NULL) +
  scale_fill_manual(values = c("firebrick2", "yellow2", "green3")) +
  opts(title = paste("Animals, Bears and Polar …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2

6
推荐指数
2
解决办法
2321
查看次数

是什么让这两个R数据帧不相同?

我有两个小数据框,this_txlast_tx.从各方面来说,它们都是完全相同的. this_tx== last_tx产生一个相同尺寸的框架,全部TRUE. this_tx %in% last_tx,两个TRUEs.视觉检查,明显相同.但是当我打电话时

identical(this_tx, last_tx)

我得到了FALSE.甚至是滑稽的

identical(str(this_tx), str(last_tx))

会回来的TRUE.如果我订this_tx <- last_tx,我会得到一个TRUE.

到底是怎么回事?我对R的内部机制没有最深刻的理解,但我找不到两个数据帧之间的单一差异.如果它是相关的,则帧中的两个变量都是因子 - 相同的级别,级别的相同数字编码,两者都只是相同原始数据帧的子集.将它们转换为字符向量并没有帮助.

背景(因为我不介意对此有所帮助):我有给患者的药物治疗记录.每个治疗记录基本上指定一个人和一个日期.第二个表格记录了在特定治疗期间给予的每种药物和剂量(通常,每种治疗给予少量药物).我正在尝试确定这个人在相同剂量下服用相同药物组合的连续时期.

我想出的最好的计划是按时间顺序检查治疗方法.如果药物和治疗剂量[i]的组合与治疗[i-1]的组合相同,则治疗[i]是与治疗[i-1]相同的一部分.当然,如果我无法比较药物/剂量组合,那就是正确的.

comparison r dataframe

6
推荐指数
2
解决办法
2000
查看次数