可能重复:
可变地选择/分配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) 我有两个具有相同列名(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中并行运行随机森林
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万个特征.
我有制表符分隔的文本文件,名为'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)
总结一下:我想在输出文件中复制相同的值而不修改它们:
我有一个文件,其中第一行是标题.标题可以包含空格和#符号(也可能有其他特殊字符).我试图使用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)
我想首先寻找一种方法来读取文件,而不是替换空格或#与其他可读符号.
我有一个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) 如何选择,比如说R中的前100行矩阵?我发现只是使用需要条件参数的子集.所有我需要通过仅使用具有相同列数的前n个行来制作更小的矩阵
我有一个以下数据框架
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) 如何在不添加水平或垂直布局的情况下将clicklistener添加到vaadin标签?我想在点击标签时显示工具提示,而不是鼠标悬停.
我有一个数据框
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,但仍然得到相同的结果,一个合并的列表。