小编use*_*306的帖子

使用变量在data.table中传递列名

可能重复:
可变地选择/分配data.table中的字段

在下面的示例中,我创建了一个列名为"x"和"v"的数据表

library('data.table')
DT <- data.table(x = c("b","b","b","a","a"), v = rnorm(5))
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式访问列'x'的值:

DT[ , x]
# [1] "b" "b" "b" "a" "a"
Run Code Online (Sandbox Code Playgroud)

但是如果我想通过传递变量来访问它,它就不起作用

temp <- "x"
DT[ , temp]
# [1] "x"
Run Code Online (Sandbox Code Playgroud)

将有多个列,我将只为其中几个选择值.我将通过R模块提供这些列名.

没关系,我明白了,它应该是:

DT[ , get(temp)]
Run Code Online (Sandbox Code Playgroud)

r data.table

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

检查一个数据帧中是否存在值

我有两个具有相同列名(C)的数据框(A,B),但在该列中可以有不同的唯一值.我想检查数据框(A)中的列(C)中的'值'是否存在于数据帧(B)中.

A = data.frame(C=c(1,2,3,4))
B = data.frame(C=c(1,3,4,7))
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我想检查B中是否存在'2'是否有任何一个没有循环的衬里,因为我有相当大的文件,并且必须在每一行检查这个.

r

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

R中随机森林的并行执行

我在R中并行运行随机森林

library(doMC)
registerDoMC()
x <- matrix(runif(500), 100)
y <- gl(2, 50)
Run Code Online (Sandbox Code Playgroud)

并行执行(耗时73秒)

rf <- foreach(ntree=rep(25000, 6), .combine=combine, .packages='randomForest') %dopar%
randomForest(x, y, ntree=ntree) 
Run Code Online (Sandbox Code Playgroud)

顺序执行(耗时82秒)

rf <- foreach(ntree=rep(25000, 6), .combine=combine) %do%
randomForest(x, y, ntree=ntree) 
Run Code Online (Sandbox Code Playgroud)

在并行执行中,树生成非常快,如3-7秒,但其余时间用于组合结果(组合选项).因此,它唯一值得运行并行执行的是树的数量真的很高.有什么方法可以调整"组合"选项,以避免在我不需要的每个节点上的任何计算,并使其更快

PS.以上只是数据的一个例子.实际上,对于大约100个观察,我有大约10万个特征.

parallel-processing r

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

read.csv空白字段为NA

我有制表符分隔的文本文件,名为'a.txt'.D列为空.

 A       B       C    D
10      20     NaN
30              40
40      30      20
20      NA      20
Run Code Online (Sandbox Code Playgroud)

我希望数据框看起来和文本文件一样,在第2行和第2列中有空格.

不幸的是,read.csv正在将所有空白和NA转换为"NA".我想读NA和NaN作为字符.

 b<- read.csv("a.txt",sep="\t", skip =0, header = TRUE, comment.char = "",check.names = FALSE, quote="", )
Run Code Online (Sandbox Code Playgroud)

总结一下:我想在输出文件中复制相同的值而不修改它们:

  • 如果输入中有空白,则输出应为空白.
  • 如果输入具有NA或Nan,则输出还应具有NA或NaN.

r read.csv

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

无法使用"#"读取文件,使用R中的read.table或read.csv读取空格

我有一个文件,其中第一行是标题.标题可以包含空格和#符号(也可能有其他特殊字符).我试图使用read.csv或read.table读取此文件,但它一直让我犯错误:

undefined columns selected 

more columns than column names 
Run Code Online (Sandbox Code Playgroud)

我的制表符分隔的chromFile文件如下所示:

Chromosome# Chr chr Size    UCSC NCBI36/hg18    NCBIBuild36 NCBIBuild37
1   Chr1    chr1    247199719   247249719   247249719   249250621
2   Chr2    chr2    242751149   242951149   242951149   243199373
Run Code Online (Sandbox Code Playgroud)

命令:

chromosomes <- read.csv(chromFile, sep="\t",skip =0, header = TRUE,  )
Run Code Online (Sandbox Code Playgroud)

我想首先寻找一种方法来读取文件,而不是替换空格或#与其他可读符号.

import r read.table

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

如何使用参数从R调用python脚本

我有一个python脚本,它需要5个参数(一个文件名,3个int值和2个浮点值).我需要从R调用这个python脚本.我该怎么做.我正在尝试使用rPython,但它不允许我传递参数

library("rPython")
python.load("python scriptname")
Run Code Online (Sandbox Code Playgroud)

我不知道如何传递参数

从命令行,我运行我的python脚本,如:

python scriptname filename 10 20 0.1 5000 30
Run Code Online (Sandbox Code Playgroud)

python r rpython

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

选择矩阵的第n行

如何选择,比如说R中的前100行矩阵?我发现只是使用需要条件参数的子集.所有我需要通过仅使用具有相同列数的前n个行来制作更小的矩阵

r matrix

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

如何订购我的数据帧lexicographicaly

我有一个以下数据框架

a = data.frame(a=c(1,2,3,4,5,6,7),b=c(1,2,3,10,12,21,4),c=c(1,2,10,11,"X","Y",3))
> a
  a  b  c
1 1  1  1
2 2  2  2
3 3  3 10
4 4 10 11
5 5 12  X
6 6 21  Y
7 7  4  3
Run Code Online (Sandbox Code Playgroud)

我想按字典顺序对整个数据框进行排序,以便输出(例如,列"c")应该是这样的

> a[,"c"]
[1] 1  2  3 10 11  X  Y
Run Code Online (Sandbox Code Playgroud)

我试过了,我正在寻找不同的答案

indata <- a[do.call(order,a[,c("c","a","b")]),]
> indata[,"c"]
[1] 1  10 11 2  3  X  Y
Levels: 1 10 11 2 3 X Y
Run Code Online (Sandbox Code Playgroud)

我尝试了gtools,mixedorder包并在一列上工作正常:

> a[mixedorder(a$c),]
  a  b  c
1 1  1  1 …
Run Code Online (Sandbox Code Playgroud)

sorting r r-faq

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

如何将clicklistener附加到Vaadin标签?

如何在不添加水平或垂直布局的情况下将clicklistener添加到vaadin标签?我想在点击标签时显示工具提示,而不是鼠标悬停.

label vaadin

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

操作数据框列中的字符串

我有一个数据框

a = data.frame("a" = c("aaa|abbb", "bbb|aaa", "bbb|aaa|ccc"), "b" = c(1,2,3))

     a       b
 aaa|abbb    1
 bbb|aaa     2
 bbb|aaa|ccc 3
Run Code Online (Sandbox Code Playgroud)

我想将栏位值除以“ |” 并对输出进行排序并将它们合并在一起,如下所示

     a       b
 aaa|abbb    1
 aaa|bbb     2
|aaa|bbb|ccc 3
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下

paste(sort(ignore.case(unlist(strsplit(as.character(a$a), "\\|")))),collapse = ", ")
Run Code Online (Sandbox Code Playgroud)

但这只是将所有东西结合在一起。如何在列A的每个值上实现它,并将结果作为数据框获取。我尝试使用lapply,但仍然得到相同的结果,一个合并的列表。

r dataframe

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