小编And*_*rie的帖子

如何找到WINDOWS-1252字符的内部代码表示?

我正在处理来自问卷的SPSS数据,该问卷必须源自M $ Word.Word会自动将连字符更改为长连字符,并转换为无法正确显示的字符,即" - "变为"ú".

我的问题:WINDOWS-1252字符集中的utf8ToInt()等价是什么?

utf8ToInt("A")
[1] 65
Run Code Online (Sandbox Code Playgroud)

当我使用自己的数据执行此操作时,出现错误:

x <- str_sub(levels(sd$j1)[1], 7, 7)
print(x)
[1] "ú"

utf8ToInt(x)
Error in utf8ToInt(x) : invalid UTF-8 string
Run Code Online (Sandbox Code Playgroud)

但是,x的内容在grep和gsub表达式中完全可用.

> Sys.getlocale()
[1] "LC_COLLATE=English_United Kingdom.1252;LC_CTYPE=English_United Kingdom.1252;LC_MONETARY=English_United Kingdom.1252;LC_NUMERIC=C;LC_TIME=English_United Kingdom.1252"
Run Code Online (Sandbox Code Playgroud)

r

8
推荐指数
2
解决办法
1230
查看次数

R:如何显示聚类矩阵热图(类似的颜色模式被分组)

我在整个网站和包中搜索了很多关于热图的问题,但我仍然有问题.
我有集群数据(kmeans/EM/DBscan ..),我想通过对同一个集群进行分组来创建热图.我希望将相似的颜色模式分组到热图中,因此通常看起来像块对角线.
我尝试按簇号排序数据并显示它,

k = kmeans(data, 3)
d = data.frame(data)
d = data.frame(d, k$cluster)
d = d[order(d$k.cluster),]
heatmap(as.matrix(d))
Run Code Online (Sandbox Code Playgroud) 但它仍然没有排序,看起来像这个链接:在此输入图像描述
但是,我希望它按簇号排序,看起来像这样:在此输入图像描述
我可以在R中这样做吗?
我搜索了很多包,尝试了很多方法,但我还是有问题.
非常感谢.

r heatmap ggplot2

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

如何用R创建时间散点图?

数据是一系列日期和时间.

date time
2010-01-01 09:04:43
2010-01-01 10:53:59
2010-01-01 10:57:18
2010-01-01 10:59:30
2010-01-01 11:00:44
…
Run Code Online (Sandbox Code Playgroud)

我的目标是用水平轴(x)上的日期和垂直轴(y)上的时间来表示散点图.我想如果同一天的时间不止一次,我也可以添加颜色强度.

创建日期直方图非常容易.

mydata <- read.table("mydata.txt", header=TRUE, sep=" ")
mydatahist <- hist(as.Date(mydata$day), breaks = "weeks", freq=TRUE, plot=FALSE)
barplot(mydatahist$counts, border=NA, col="#ccaaaa")
Run Code Online (Sandbox Code Playgroud)
  1. 我还没想出如何创建一个散点图,其中轴是日期和/或时间.
  2. 我也希望能够使用线性日期YYYY-MM-DD不需要轴,但也可以根据MM-DD等月份(如此不同的年份累积),或者甚至是周数轮换.

任何帮助,RTFM URI打包或提示都是受欢迎的.

r time-series scatter-plot ggplot2

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

R中的近似查找

我有以下查找表:

lkp <- data.frame(
         x=c(0,0.2,0.65,0.658,1.3,1.76,2.7), 
         y=c(1,1,1,0.942,0.942, 0.92, 0.89)
       )
Run Code Online (Sandbox Code Playgroud)

我想得到给定X值的Y值.

如果表中存在X值,则应返回表的确切Y. 如果X值不存在,那么Y值应该作为2个最近邻居(仅2个最近邻居)的线性插值返回.我不想让模型适合整体数据.

对于上表

for X=0.2 Y=1 (exact lookup) 
for X=2 Y=0.91 (linear interpolation between the last 2 rows of the data frame)
Run Code Online (Sandbox Code Playgroud)

有没有准备好的功能呢?

lookup r

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

如何在函数内使用ls()搜索环境?

我想找到一组函数并保存它们,因为我想将它们发送到Rdata文件中的远程服务器,我不想在服务器上安装新的软件包.

虽然我使用下面的方法收到错误,但欢迎使用更简单/更好的方法.

MWE:

这是两个虚函数:

abcd.fun.1    <- function() return(1)
abcd.fun.2    <- function() return(2)
Run Code Online (Sandbox Code Playgroud)

我可以识别虚函数:

ls()[grep('abcd', ls())]
Run Code Online (Sandbox Code Playgroud)

但是当我将它包装在一个函数中时:

 find.test <- function(x) {
     return(ls()[grep(x, ls())])
 }
 find.test('abcd')
Run Code Online (Sandbox Code Playgroud)

该函数返回 character(0)

最终我想

 save(find.test('abcd'), file = test.Rdata)
Run Code Online (Sandbox Code Playgroud)

environment grep r

8
推荐指数
2
解决办法
6854
查看次数

我应该如何格式化R mlogit包的数据?

我正在使用mlogitR包.

使用以下方法导入数据后:

t <-read.csv('junk.csv',header=TRUE, sep=",", dec=".")
Run Code Online (Sandbox Code Playgroud)

并致电:

x <- mlogit.data(t,choice="D",shape="long",id.var="key",alt.var="altkey")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error in `row.names<-.data.frame`(`*tmp*`, value = c("1.1", "1.2", "1.3",  : 
  duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique values when setting 'row.names': ‘1.1’, ‘1.2’, ‘1.3’, ‘1.4’, ‘1.5’, ‘1.6’
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决它?

我的数据在csv文件中以以下格式存在:

[junk.csv]

key,altkey,A,B,C,D
201005131,1,2.6,118.17,117,0
201005131,2,1.4,117.11,115,0
201005131,3,1.1,117.38,122,1
201005131,4,24.6,,122,0
201005131,5,48.6,91.90,122,0
201005131,6,59.8,,122,0
201005132,1,20.2,118.23,113,0
201005132,2,2.5,123.67,120,1
201005132,3,7.4,116.30,120,0
201005132,4,2.8,118.86,120,0
201005132,5,6.9,124.72,120,0
201005132,6,2.5,123.81,120,0
201005132,7,8.5,119.23,115,
Run Code Online (Sandbox Code Playgroud)

r

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

整数变量的气泡图,其中最大气泡的直径为1(在x或y轴刻度上)?

我希望实现以下结果:

  1. 重新调整气泡的大小,使最大气泡的直径为1(在x和y轴的压缩比例较大的任何一个上).
  2. 重新调整气泡的大小,使最小的气泡直径为1毫米
  3. 有一个图例的第一个和最后一个点的最小非零频率和最大频率.

我能做的最好的事情如下,但我需要一个更通用的解决方案,其中计算maxSize的值而不是硬编码.如果我在传统的R图中这样做,我会使用par("pin")来计算绘图区域的大小并向后工作,但我无法弄清楚如何使用ggplot2访问此信息.有什么建议?

library(ggplot2)
agData = data.frame(
  class=rep(1:7,3),
  drv = rep(1:3,rep(7,3)),
  freq = as.numeric(xtabs(~class+drv,data = mpg))
)

agData = agData[agData$freq != 0,]
rng = range(agData$freq)
mn = rng[1]
mx = rng[2]
minimumArea = mx - mn
maxSize = 20
minSize = max(1,maxSize * sqrt(mn/mx))
qplot(class,drv,data = agData, size = freq) + theme_bw() + 
  scale_area(range = c(minSize,maxSize), 
             breaks = seq(mn,mx,minimumArea/4), limits = rng) 
Run Code Online (Sandbox Code Playgroud)

这是迄今为止的样子: 在此输入图像描述

r ggplot2

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

如何使用knitr来比较不同版本R的性能?

我想评估一些代码在不同版本的R中的性能.原则上这很容易:

  • 开始R.
  • 使用system.time()测量所花费的时间来运行一段代码
  • 终止R.
  • 冲洗并重复使用其他版本

现在,我想使用knitr创建报告来执行此操作.所以,在我看来,我需要一种机制来在每个块中启动一个新的会话.

我该怎么做呢?


一些示例knitr 降价代码用作演示.此代码使用图形绘制ggplot,但显然两个版本都返回相同的时序,因为我不知道如何为每个块启动新版本的R.

Comparison of R performance
========================================================

# Do analysis in R version 2.14

```{r fig.width=6, fig.height=3}
library(ggplot2)
data(diamonds)

system.time({
  p <- ggplot(diamonds, aes(carat, price/carat, colour=clarity)) + geom_point()
  print(p)
})
```


# Repeat same analysis in R 2.15

```{r fig.width=6, fig.height=3}
library(ggplot2)
data(diamonds)

system.time({
  p <- ggplot(diamonds, aes(carat, price/carat, colour=clarity)) + geom_point()
  print(p)
})
```
Run Code Online (Sandbox Code Playgroud)

r knitr

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

如何判断某个软件包是否已安装?

当我安装yaml软件包时,如果以前安装过,则会在RStudio中弹出恼人的错误消息.如何判断软件包是否已安装,以便我可以在代码中决定是否安装软件包?

消息在弹出窗口中,它是:

当前加载了将由此安装更新的一个或多个软件包.强烈建议在更新这些软件包之前重新启动R. RStudio可以重新启动R,然后在重新启动后自动继续安装(在重新启动期间将保留所有工作和数据).您想在安装之前重启R吗?

r rstudio

8
推荐指数
2
解决办法
7388
查看次数

R knitr在循环中打印

我一直在使用该xtable包从R矩阵中创建HTML表.当我kable在循环中使用该函数时,它没有输出任何内容.所以我盯着使用这个print功能.问题是,当我使用print函数时,我会在HTML表格中打印出很多"##".有没有办法打印我的kable但在循环中避免每行"##"?

library("xtable", lib.loc="~/R/win-library/3.1")

for(i in 1:3) {
    #Must use print because of the loop, but get ## per line
    print(kable(head(cars), "html", table.attr='class="flat-table"'))
}
#No neded to use print, no ## printed per line
kable(head(cars), "html", table.attr='class="flat-table"')
Run Code Online (Sandbox Code Playgroud)

loops r knitr

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

标签 统计

r ×10

ggplot2 ×3

knitr ×2

environment ×1

grep ×1

heatmap ×1

lookup ×1

loops ×1

rstudio ×1

scatter-plot ×1

time-series ×1