小编Ric*_*rdo的帖子

转置数据框

我需要转置一个大型数据框,所以我使用:

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 ..)....

r dataframe

95
推荐指数
4
解决办法
24万
查看次数

EMACS折叠/展开R代码

是否有一个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)

我不知道是否正确,当你离开大块时,它会自动展开.

emacs folding ess sweave

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

R-regexp问题

我需要使用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

regex r

6
推荐指数
2
解决办法
812
查看次数

后台R控制台和长时间运行会话

这是我的情况:我通常REmacs使用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脚本在我的笔记本电脑中.所以,这是工作流程:

  1. ssh 到主机服务器
  2. 开始screen会议
  3. 开始 R
  4. 分离 screen
  5. 从关闭ssh连接的服务器退出
  6. emacs在本地计算机上作为守护程序运行并打开一个emacsclient 实例(不必通过emacsclient运行emacs但我更喜欢这种方式)
  7. 打开你的R脚本
  8. 打开一个ansi-term(M-x ansi-term)
  9. ssh 从服务器到 ansi-term
  10. 附上屏幕会话(screen -r)
  11. 将远程R控制台连接到本地R脚本( …

emacs ssh r

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

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).

哪里错了?你有什么建议吗?

r

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

R在矩阵中替换NA

在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)

r

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

R 将进一步的参数传递给函数

我正在编写这样的函数:

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)

我想知道的是baselog即使没有明确声明到函数参数中,是否可以更改函数的参数myFunction <- function(l, ...)

祝一切顺利

r function

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

标签 统计

r ×6

emacs ×2

dataframe ×1

ess ×1

folding ×1

function ×1

regex ×1

ssh ×1

sweave ×1