我需要转置一个大型数据框,所以我使用:
df.aree <- t(df.aree)
df.aree <- as.data.frame(df.aree)
Run Code Online (Sandbox Code Playgroud)
这是我获得的:
df.aree[c(1:5),c(1:5)]
10428 10760 12148 11865
name M231T3 M961T5 M960T6 M231T19
GS04.A 5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04
GS16.A 5.248690e+04 4.047780e+03 3.763850e+04 1.187454e+04
GS20.A 5.370910e+03 9.518396e+03 3.552036e+04 1.497956e+04
GS40.A 3.640794e+03 1.084391e+04 4.651735e+04 4.120606e+04
Run Code Online (Sandbox Code Playgroud)
我的问题是我需要消除的新列名称(10428,10760,12148,11865),因为我需要将第一行用作列名.
我试过col.names()功能,但我没有得到我需要的东西.
你有什么建议吗?
编辑
谢谢你的建议!使用它我获得:
df.aree[c(1:5),c(1:5)]
M231T3 M961T5 M960T6 M231T19
GS04.A 5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04
GS16.A 5.248690e+04 4.047780e+03 3.763850e+04 1.187454e+04
GS20.A 5.370910e+03 9.518396e+03 3.552036e+04 1.497956e+04
GS40.A 3.640794e+03 1.084391e+04 4.651735e+04 4.120606e+04
GS44.A 1.225938e+04 2.681887e+03 1.154924e+04 4.202394e+04
Run Code Online (Sandbox Code Playgroud)
现在我需要在因子列中转换行名(GS ..)....
是否有一个Emacs次要模式(或一段elisp代码),允许您在Sweave(Sweave = R + LaTeX)中有选择地隐藏/显示环境?
例如,我想移动到代码块(<< >>)的开头,点击击键,并从视图中隐藏环境的内容.
这可能吗?我只是尝试过hs-minor-mode,allout-mode和outline-minor-mode,但是大多数都不能识别R环境.
我还尝试了org-mode,它非常适合折叠/展开,但不支持LaTeX突出显示代码,如:\ cite {};\REF {};\ce {} ...
最好的Riccardo
- 编辑 -
我有一天尝试使用emacs-folding-mode但是,因为我处理了很长的代码(超过2000行),折叠模式"变得疯狂",例如误解了一些特殊字符(即$)的挖掘,在R中使用与LaTeX有很大不同.我认为这个问题是Sweave固有的,因为在同一个缓冲区中我将R代码和LaTeX代码放在一起.
所以,现在我正在测试emacs概述次要模式.但是当我从LaTeX移动R(反之亦然)时,尽管我在我的.emacs中写道,但所有概述的部分都展开了:
(defun turn-on-outline-minor-mode ()
(outline-minor-mode 1))
(add-hook 'ess-mode-hook 'turn-on-outline-minor-mode)
(add-hook 'LaTeX-mode-hook 'turn-on-outline-minor-mode)
(add-hook 'latex-mode-hook 'turn-on-outline-minor-mode)
(setq outline-minor-mode-prefix "\C-c\C-o")
Run Code Online (Sandbox Code Playgroud)
你有什么建议吗??
问候
--EDIT 2--
它似乎工作:
(load "folding" 'nomessage 'noerror)
(folding-mode-add-find-file-hook)
(add-hook 'LaTeX-mode-hook 'folding-mode)
(add-hook 'ess-mode-hook 'folding-mode)
(folding-add-to-marks-list 'ess-mode "#{{{ " "#}}}" " ")
Run Code Online (Sandbox Code Playgroud)
我不知道是否正确,当你离开大块时,它会自动展开.
我需要使用regexp重新塑造我的数据框,特别是这种线
X21_GS04.A.mzdata
Run Code Online (Sandbox Code Playgroud)
必须成为:
GS04.A
Run Code Online (Sandbox Code Playgroud)
我试过
pluto <- sub('^X[0-90_]+','', my.data.frame$File.Name, perl=TRUE)
Run Code Online (Sandbox Code Playgroud)
它有效; 比我试过
pluto <- sub('.mzdata$','', my.data.frame$File.Name, perl=TRUE)
Run Code Online (Sandbox Code Playgroud)
它也有效.
问题是我不知道如何将两个代码合二为一,我尝试了这样的脚本
pluto <- sub('^X[0-90_]+ | .mzdata$','', my.data.frame$File.Name, perl=TRUE)
Run Code Online (Sandbox Code Playgroud)
但没有任何意义.有人能跟我说错吗?
最好的Riccardo
这是我的情况:我通常R在Emacs使用ESS终端模拟器,在我的本地电脑中运行.在我的工作场所,我们运行一个新的服务器,R所以我将使用远程服务器ssh.我连接通过ssh,一切正常.我要做的是R在我关闭笔记本电脑并回家的同时保持控制台的存活,这样,从我的家里我将重新连接到现有的R会话.我尝试将R控制台放在后台使用C-q C-z Enter来停止进程但是,当我关闭ssh连接时,进程被终止.没有运气bg &也没用.我也尝试了,mosh但在这种情况下,我得到了一些与我工作网络中的UDP流量相关的问题.Screen并且tmux由于与他们的不良互动而不是非常有用Emacs eshell.在客户端和服务器机器上,我运行Debian 8 xfce.
是否有办法在关闭ssh连接时保持R终端的活动状态?你对长期会议的态度是什么?
编辑
终于来了,我在这里找到了我正在寻找的解决方案.我尝试了与上面链接相同的方法,但是使用tmux,我得到了很多错误.圣杯是屏幕.我尝试按照一步一步的步骤进行操作,但是当我尝试从eshell中附加一个屏幕会话时,我从emacs收到错误.所以我尝试使用ansi-term而不是eshell,并且所有工作都按预期工作.我可以附加和分离R会话.通过这种方式,我只使用远程服务器机器进行计算,而R脚本在我的笔记本电脑中.所以,这是工作流程:
ssh 到主机服务器screen会议Rscreenemacs在本地计算机上作为守护程序运行并打开一个emacsclient
实例(不必通过emacsclient运行emacs但我更喜欢这种方式)R脚本ansi-term(M-x ansi-term)ssh 从服务器到 ansi-termscreen -r)R控制台连接到本地R脚本( …我有一个列表,listDFs其中每个元素都是一个数据框.每个数据框具有不同的行数和相同的列数.
我应该从listDFs [[i]] $ Name开始创建一个向量,从列表中提取所有i元素.
我想用一个循环这样:
vComposti <- c()
for(j in 1:10){vComposti <- c(listDFs[[j]]$Name)}
Run Code Online (Sandbox Code Playgroud)
但结果是一个向量只包含列表的第一级(listDFs [[1]] $ Name).
哪里错了?你有什么建议吗?
在RI中有一个带有一些缺失值的数据框,因此该read.table()函数使用NAs而不是空白单元格.
我写了这个:
a <- sample(1000:50000000, size=120, replace=TRUE)
values <- matrix(a, nrow=6, ncol=20)
mtx <- cbind.data.frame(values, c(rep(NA),6))
mtx <- apply(mtx, 2, function(x){
if (x==NA) sample(100:500, replace=TRUE, size=nrow(mtx)) else (x)})
Run Code Online (Sandbox Code Playgroud)
但我有这个错误:
Error in if (x == NA) sample(100:500, replace = TRUE, size = nrow(mtx)) else (x) :
missing value where TRUE/FALSE needed
In addition: Warning message:
In if (x == NA) sample(100:500, replace = TRUE, size = nrow(mtx)) else (x) :
the condition has length > 1 and …Run Code Online (Sandbox Code Playgroud) 我正在编写这样的函数:
myFunction <- function(x, y, z) {
value <- lapply(x, function(x) {
value <- otherFunction(y, z, k, j)
return(value)
}
)
}
Run Code Online (Sandbox Code Playgroud)
有没有办法“使用”在 lapply 中调用的函数的 k 和 j 参数,而无需将它们显式写入 myFunction 的参数部分?
编辑
这可能是一个运行示例:
myl <- list(A=c(1:20), B=c(10:30), C=c(20:40))
myFunction <- function(l, ...){
value <- lapply(l, function(x, ...){
log(x, base=exp(100))
})
return(value)
}
myFunction(l=myl)
Run Code Online (Sandbox Code Playgroud)
我想知道的是base,log即使没有明确声明到函数参数中,是否可以更改函数的参数myFunction <- function(l, ...)。
祝一切顺利