小编Edu*_*oni的帖子

使用XML包将html表刮入R数据帧

如何使用XML包刮取html表?

巴西足球队的维基百科页面为例.我想在R中阅读并获得"巴西队对阵FIFA认可球队所有比赛的名单"表作为data.frame.我怎样才能做到这一点?

html xml parsing r web-scraping

151
推荐指数
4
解决办法
11万
查看次数

R中有用的小功能?

你写的功能是什么,不值得一个包,但你想分享?

我会投入一些我的:

destring <- function(x) {
    ## convert factor to strings
    if (is.character(x)) {
        as.numeric(x)
    } else if (is.factor(x)) {
        as.numeric(levels(x))[x]
    } else if (is.numeric(x)) {
        x
    } else {
        stop("could not convert to numeric")
    }
}

pad0 <- function(x,mx=NULL,fill=0) {
  ## pad numeric vars to strings of specified size
  lx <- nchar(as.character(x))
  mx.calc <- max(lx,na.rm=TRUE)
  if (!is.null(mx)) {
    if (mx<mx.calc) {
      stop("number of maxchar is too small")
    }
  } else {
    mx <- mx.calc
  }
  px <- mx-lx
  paste(sapply(px,function(x) …
Run Code Online (Sandbox Code Playgroud)

r

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

哪些编程语言有利于统计?

我最近对某些事情做了一些统计分析,我很好奇是否有任何编程语言特别适合这个目的.我知道R,但我更喜欢一些更通用的东西(或者R是非常通用的?).

你们有什么建议?是否有任何语言的语法/语义特别针对这个?或者是否有任何语言具有非常好的库?

statistics programming-languages r libraries

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

调试lapply/sapply调用

使用lapply和朋友编写的代码通常在眼睛上更容易,而且比循环更容易Rish.我和下一个人一样喜欢lapply,但是当出现问题时如何调试呢?例如:

> ## a list composed of numeric elements 
> x <- as.list(-2:2)
> ## turn one of the elements into characters
> x[[2]] <- "what?!?"
> 
> ## using sapply
> sapply(x, function(x) 1/x)
Error in 1/x : non-numeric argument to binary operator
Run Code Online (Sandbox Code Playgroud)

我使用了for循环:

> y <- rep(NA, length(x))
> for (i in 1:length(x)) {
+     y[i] <-  1/x[[i]]
+ }
Error in 1/x[[i]] : non-numeric argument to binary operator
Run Code Online (Sandbox Code Playgroud)

但我会知道错误发生在哪里:

> i
[1] 2
Run Code Online (Sandbox Code Playgroud)

使用lapply/sapply时我该怎么办?

r

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

为什么"+"不对R中的字符进行操作?

叫我懒,但我只是讨厌像往常一样打字paste("a","b",sep='').

我知道"(t)他是R.不管怎样,只有如何." (library(fortunes);(fortune(109)).所以,我的后续问题是:是否有可能轻易改变这种行为?

syntax r operators

22
推荐指数
2
解决办法
1108
查看次数

将函数应用于R中的距离矩阵

这个问题今天出现在操纵邮件列表中.

http://groups.google.com/group/manipulatr/browse_thread/thread/fbab76945f7cba3f
Run Code Online (Sandbox Code Playgroud)

我在改写.

给定距离矩阵(用其计算dist)将函数应用于距离矩阵的行.

码:

library(plyr)
N <- 100
a <- data.frame(b=1:N,c=runif(N))
d <- dist(a,diag=T,upper=T)
sumd <- adply(as.matrix(d),1,sum)
Run Code Online (Sandbox Code Playgroud)

问题是要按行应用函数,你必须存储整个矩阵(而不仅仅是下三角形部分.因此它对大型矩阵使用了太多内存.在我的计算机中,对于大小为10000的矩阵,它会失败.

有任何想法吗?

algorithm r

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

调试littler/Rscripts

如何调试Rscripts从命令行运行?

我目前正在使用该getopt包来传递命令行选项,当出现错误时我很难,我很难:

  1. 看看究竟出了什么问题;
  2. 以交互方式调试R(因为脚本需要命令行选项.)

有没有人有示例代码并愿意分享?

debugging r

6
推荐指数
1
解决办法
944
查看次数

是否可以在基本图形中将轴标签分成2行?

我试图让x轴标签分成两行.我还希望标签旋转45度.我怎样才能做到这一点?

到目前为止我所拥有的:

N <- 10
dnow <- data.frame(x=1:N, y=runif(N), labels=paste("This is observation ",1:N))
with(dnow, plot(x,y, xaxt="n", xlab=""))
atn <- seq(1,N,3)
axis(1, at=atn, labels=labels[atn])
Run Code Online (Sandbox Code Playgroud)

graphics r

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

使用功能和环境

这里在最近的讨论(如1,2)我现在用在我的一些代码的环境.我的问题是,如何根据参数创建修改环境的函数?例如:

y <- new.env()
with(y, x <- 1)
f <- function(env,z) {
    with(env, x+z)
}
f(y,z=1)
Run Code Online (Sandbox Code Playgroud)

Error in eval(expr, envir, enclos) : object 'z' not found
Run Code Online (Sandbox Code Playgroud)

我正在使用环境来同时保持两组模拟(没有重构我的代码,我为一组实验编写了代码).

scope r

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

基于行成员资格的逻辑向量

感谢您的耐心等待.

我正在处理详细介绍患者和药物的大型数据集.

药物很难编码,因为它们(通常)没有意义,除非与剂量匹配.

我有一个带载体的数据框(Drug1,Drug2 ..... Drug 16),其中个体患者用行表示.载体实际上是因子,具有100个可能的水平(患者可以使用的所有药物).

我想做的就是产生一个逻辑向量(TTTTFFFFTTT ......),然后我可以将其转换成一个数据帧,告诉我患者是否患有特定的药物.

然后,我可以使用特别重要的药物存在或不存在作为模型中的分类协变量.

我试过grep,沿着行搜索,我可以生成一个标识符向量,但我似乎无法生成逻辑向量.

我意识到我做错了什么.

names(drugindex)
 [1] "book.MRN" "DRUG1"    "DRUG2"    "DRUG3"    "DRUG4"    "DRUG5"  
 [7] "DRUG6"    "DRUG7"    "DRUG8"    "DRUG9"    "DRUG10"   "DRUG11"  
[13] "DRUG12"   "DRUG13"   "DRUG14"   "DRUG15"   "DRUG16"  

> truvec<-drugindex$book.MRN[as.vector(unlist(apply(drugindex[,2:17], 2, grep, pattern="Lamotrigine")))]
> truvec
truvec
[1] 0024633  0008291  0008469  0030599  0027667
37 Levels: 0008291  0008469  0010188  0014217  0014439  0015822  ... 0034262

> head(drugindex)
   book.MRN       DRUG1        DRUG2          DRUG3        DRUG4        DRUG5
4  0008291  Venlafaxine Procyclidine  Flunitrazepam Amisulpiride    Clozapine
31 0008469  Venlafaxine  Mirtazapine        Lithium   Olanzapine   Metoprolol
3 …
Run Code Online (Sandbox Code Playgroud)

r

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

怎么才能让R回来

我刚刚在我的Android-Project中删除了类R,我该如何取回它.我试图清理Project Setup,我创建了引用R的新文件但是没有任何作用.请帮帮我,我该怎么办?

最好的祝福

苹果浏览器

java android delete-file

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

更干净地修改 R 中数据框中的列 - 可能使用 with() 或 apply()?

我理解 R 中重复事物的答案通常是“ apply()”而不是循环。对于我经常创建的一些讨厌的代码,是否有更好的 R 设计模式?

因此,从 HTML 中提取表格数据,我通常需要更改数据类型,并最终运行这样的东西,将第一列转换为日期格式(从十进制),并将第 2-4 列从带有逗号千位分隔符的字符串转换为比如“2,400,000”到数字“2400000”。

X[,1] <- decYY2YY(as.numeric(X[,1]))
X[,2] <- as.numeric(gsub(",", "", X[,2]))
X[,3] <- as.numeric(gsub(",", "", X[,3]))
X[,4] <- as.numeric(gsub(",", "", X[,4]))
Run Code Online (Sandbox Code Playgroud)

我不喜欢在这里的左侧和骑行侧都有 X[,number] 重复,或者我对 2-4 重复了基本相同的语句。

是否有一种非常 R 风格的方法可以使 X[,2] 减少重复但仍然无循环?某种说法是“将其应用于第 2、3、4 列——一个将当前列重新分配给适当修改版本的函数?”

我不想创建一个完整的、可重复的清洁功能,真的,只是一个快速的匿名功能,可以减少重复。

coding-style r apply

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