小编use*_*827的帖子

安装rJava

我试图用之前的问题/答案解决这个问题,但没有任何成功.所以,这是我的问题.

我正在使用RStudio和Ubuntu盒子(14.04),我试图从源代码升级rJava,在这个过程中我设法失去了它.

我尝试再次使用,安装它,

install.packages("rJava")
Run Code Online (Sandbox Code Playgroud)

返回以下错误消息,

configure: error: One or more Java configuration variables are not set.
Make sure R is configured with full Java support (including JDK). Run
R CMD javareconf
as root to add Java support to R.

If you don't have root privileges, run
R CMD javareconf -e
to set all Java-related variables and then install rJava.

ERROR: configuration failed for package ‘rJava’
* removing ‘/home/darren/R/x86_64-pc-linux-gnu-library/3.2/rJava’
Warning in install.packages :
  installation of package ‘rJava’ had non-zero exit status …
Run Code Online (Sandbox Code Playgroud)

r rjava

17
推荐指数
3
解决办法
3万
查看次数

从文本文件中提取数据

在其他语言中似乎有类似的问题,但我在R中找不到一个.

我在目录的子目录中有许多文本文件; 它们都有扩展名(.log),它们包含文本和数据的混合.我想从这些相对较大的文件中提取几行.

例如,一个文件如下...

blahblahblah

NUMBER OF CARTESIAN GAUSSIAN BASIS FUNCTIONS =  210

blahblahblah

 ----------------------------------------<br />
 CPU timing information for all processes<br />
 ========================================<br />
 0: 8853.469 + 133.948 = 8987.417<br />
 1: 8850.817 + 126.587 = 8977.405<br />
 2: 8851.925 + 128.576 = 8980.501<br />
 3: 8847.992 + 125.871 = 8973.864<br />
 ----------------------------------------<br />
 ddikick.x: exited gracefully.<br />

blahblahblah
Run Code Online (Sandbox Code Playgroud)

我想收集基本函数的数量(本例中为210)和CPU时间总量.

"CARTESIAN GAUSSIAN BASIS FUNCTIONS数量="这一行对每个文件都是唯一的; 即,如果我在文本编辑器中打开文件并使用此字符串进行搜索,我只返回这一行.类似地,对于"所有进程的CPU时序信息"和"优雅地退出".

我很欣赏我似乎没有做很多事来帮助自己,但我不知道从哪里开始.如果有人能指出我正确的方向,我希望能够填补其余的.

在@Ben给我的帮助之后(见下文),这里是我最终使用的代码,

filesearch <- function (x) {

f <- readLines(x)
cline <- grep("NUMBER OF …
Run Code Online (Sandbox Code Playgroud)

r

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

替换计算结果

我正在调整数据,具体来说,我打开了这个pdf http://pubs.acs.org/doi/suppl/10.1021/ja105035r/suppl_file/ja105035r_si_001.pdf并从表s4中删除了数据,

    1a 1b 1a 1b
1 5.27 4.76 5.09 4.75
2 2.47 2.74 2.77 2.80
4 1.14 1.38 1.12 1.02
6 7.43 7.35 7.22-7.35a 7.25-7.36a
7 7.38 7.34 7.22-7.35a 7.25-7.36a
8 7.23 7.20 7.22-7.35a 7.25-7.36a
9(R) 4.16 3.89 4.12b 4.18b
9(S) 4.16 3.92 4.12b 4.18b
10 1.19 0.91 1.21 1.25
Run Code Online (Sandbox Code Playgroud)

将其粘贴到记事本中并将其保存为txt文件.

s4 <- read.table("s4.txt", header=TRUE, stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

给,

   X1a  X1b      X1a.1      X1b.1
1 5.27 4.76       5.09       4.75
2 2.47 2.74       2.77       2.80
4 1.14 1.38       1.12       1.02
6 7.43 …
Run Code Online (Sandbox Code Playgroud)

r mean gsub strsplit

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

数据框查找值在范围内并返回不同的列

我有两个数据帧,并希望使用one(DF1$pos)中的值来搜索DF2中的两列(DF2start,DF2end),如果它在这些数字范围内,则返回DF2$name

DF1

ID   pos  name
chr   12
chr  542
chr  674
Run Code Online (Sandbox Code Playgroud)

DF2

ID   start   end   annot
chr      1   200      a1
chr    201   432      a2
chr    540  1002      a3
chr   2000  2004      a4
Run Code Online (Sandbox Code Playgroud)

所以在这个例子中我希望DF1成为

ID   pos  name
chr   12    a1
chr  542    a3
chr  674    a3
Run Code Online (Sandbox Code Playgroud)

我尝试过使用merge和intersect但不知道如何使用if带有逻辑表达式的语句.

数据帧应编码如下,

DF1  <- data.frame(ID=c("chr","chr","chr"),
               pos=c(12,542,672),
               name=c(NA,NA,NA))

DF2  <- data.frame(ID=c("chr","chr","chr","chr"),
               start=c(1,201,540,200),
               end=c(200,432,1002,2004),
               annot=c("a1","a2","a3","a4"))
Run Code Online (Sandbox Code Playgroud)

merge r multiple-columns dataframe

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

从数据框中删除百分比

我有一个源自excel文件的数据框.它在列上方有通常的标题,但是有些列中有%符号,我想删除它们.

搜索stackoverflow提供了一些很好的代码来删除矩阵中的百分比,任何方法来编辑R中矩阵中的值?,当我试图将它应用于我的数据帧时,它不起作用

as.numeric(gsub("%", "", my.dataframe))
Run Code Online (Sandbox Code Playgroud)

相反,它只返回一串"NA",并带有警告信息,说明它们是由强制引入的.当我申请时,

gsub("%", "", my.dataframe))
Run Code Online (Sandbox Code Playgroud)

我得到了"c(...)"形式的值,其中......表示数字后面跟着我为每一列重现的逗号.没有%是有证据的; 如果我能把它放回原处......我会做饭.

非常感谢任何帮助,谢谢.

regex r dataframe

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

对于Loop One来说太长了

我编写了一个将原子符号转换为原子序数的函数......

AtomicNo  <- function(x) {
  y  <- NULL
  for (i in seq(along=x)) {
    if (x[i] == "H") y[i]  <- 1.0 else
      if (x[i] == "C") y[i]  <- 6.0 else
        if (x[i] == "O") y[i]  <- 8.0 else
          if (x[i] == "Fe") y[i]  <- 26.0 else
            if (x[i] == "Br") y[i]  <- 35.0
    y  <- append(y,y[i])
  }
    return(y)
  }
Run Code Online (Sandbox Code Playgroud)

对于矢量

a <- c("Fe", "Br", "O", "O", "C", "H", "H", "H", "C", "H", "H", "H", 
        "C", "H", "H", "H", "C", "H", "H", …
Run Code Online (Sandbox Code Playgroud)

r

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

梳理一份不相等的data.frames列表

我正在尝试组合一个不相等的data.frames列表; 明显的do.call(rbind, df.lst)失败,但真正的问题是用NAs 填充它.

df.lst <- list(A=data.frame(a=c(1,2),b=c(5,4),d=c(2,3),e=c(1,1),f=c(1,2),g=c(1,2)),
               B=data.frame(a=c(1,2),b=c(3,2),d=c(2,3)),
               C=data.frame(a=c(1,2),b=c(4,3),d=c(1,2),e=c(1,3))
               )
Run Code Online (Sandbox Code Playgroud)

我可以看到我需要在最长的data.frame中找到最大列数; 我可以使用以下代码执行此操作,

max(sapply(df.lst,ncol))
Run Code Online (Sandbox Code Playgroud)

但在那之后我被困住了.建议可以对列表进行索引,并自动用NAs 填充它.

一旦我有了填充列表,我预计会有一个do.call()如前所述的简单.(我试图保留基础R的答案,虽然有许多类似的问题我似乎无法找到这个精确答案的答案).

r

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

数据帧的逻辑合并

我有两个data.frames,其中一个包含一式三份完成的多个实验的特定顺序(DF1设计表); 另一个包含这些实验的结果(一式三份,DF2结果表).第一个数据帧具有随机的实验顺序,结果表具有不同的顺序.

DF1的前六列包含实验的因素,例如温度,试剂的当量等......结果表DF2也具有相同的六列以及包含实验结果的其他列,例如产量,各种试剂的转换等......

表格的不同之处在于行数.结果表比设计表少三行.

我如何计算这两个表,以便将结果附加到设计中,以便设计表中的实验参数与实验表中的相应结果相匹配.

DF1

T1  A1  B1
T2  A1  B1
T1  A2  B1
T2  A2  B1
T1  A1  B2
T2  A1  B2
T1  A2  B2
T2  A2  B2
Run Code Online (Sandbox Code Playgroud)

但一式三份.

DF2

T1  A2  B2  1
T1  A2  B1  3
T2  A2  B1  3
T1  A1  B1  1
T2  A1  B2  2
T2  A2  B2  2
T2  A1  B1  2
Run Code Online (Sandbox Code Playgroud)

再次一式三份,注意到少了一行.请注意,结果列比显示的列多.

关于所有这些工作的重点:我正在研究是否可以将包RcmdrPlugin.DoE应用于某些实际数据.

至于我试过的......好吧,我想过使用sapply,cbind和ifelse与逻辑函数

sapply(
DF3 <- ifelse( DF1[,1] == DF2[,1] | DF1[,2] == DF2[,2] | DF2[,3] == DF2[,3],
cbind(DF1, DF2[,3]), …
Run Code Online (Sandbox Code Playgroud)

r

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

产品和浮点

我正在复制纸张部分的计算部分......

prod(c(0.44, 0.26, 0.21, 0.35, 0.37, 0.42, 0.35, 0.45, 0.34, 0.39, 
0.33, 0.38, 0.26, 0.42, 0.22, 0.22, 0.47))
Run Code Online (Sandbox Code Playgroud)

这使,

8.500645e-09
Run Code Online (Sandbox Code Playgroud)

但是,该报告将此值报告为

8.13e-09
Run Code Online (Sandbox Code Playgroud)

在整个计算中存在其他差异的例子,例如这个(另一个prod()计算,lm()需要斜率和截距以供后续使用,其结果给出略微不同的结果).

我怀疑我正在考虑浮点差异,但我怎么能确定?如果是浮点差异,我需要进一步的信息来更精确地重现计算?

ps我已经阅读了关于浮点运算的stackoverflow上的帖子.

r

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

标签 统计

r ×9

dataframe ×2

gsub ×1

mean ×1

merge ×1

multiple-columns ×1

regex ×1

rjava ×1

strsplit ×1