我试图用之前的问题/答案解决这个问题,但没有任何成功.所以,这是我的问题.
我正在使用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中找不到一个.
我在目录的子目录中有许多文本文件; 它们都有扩展名(.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) 我正在调整数据,具体来说,我打开了这个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) 我有两个数据帧,并希望使用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) 我有一个源自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(...)"形式的值,其中......表示数字后面跟着我为每一列重现的逗号.没有%是有证据的; 如果我能把它放回原处......我会做饭.
非常感谢任何帮助,谢谢.
我编写了一个将原子符号转换为原子序数的函数......
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) 我正在尝试组合一个不相等的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的答案,虽然有许多类似的问题我似乎无法找到这个精确答案的答案).
我有两个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) 我正在复制纸张部分的计算部分......
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上的帖子.