R 行名称的结果非常奇怪。这是虫子吗?
我有一个包含此内容的文件(以选项卡分隔): 我加载了以下内容:R 行名称的结果非常奇怪。这是虫子吗?,r,R,我有一个包含此内容的文件(以选项卡分隔): 我加载了以下内容: jo <- read.table("tmp.tsv",header=T,row.names=1,sep="\t") 我得到行名“chrF1_18000000”: 注意不同的零数。重新表述问题:虽然行名称“chrF1_180000”或“chrF1_180”不存在,但R返回“chrF1_18000000” 我已经在两台不同的机器(linux和mac)上使用了不同的R版本(3.0.1(2013-05-16)和R版本2.15.2(2
jo <- read.table("tmp.tsv",header=T,row.names=1,sep="\t")
我得到行名“chrF1_18000000”:
注意不同的零数。重新表述问题:虽然行名称“chrF1_180000”或“chrF1_180”不存在,但R返回“chrF1_18000000”
我已经在两台不同的机器(linux和mac)上使用了不同的R版本(3.0.1(2013-05-16)和R版本2.15.2(2012-10-26))
这种行为完全出乎我的意料(并且是我脚本中许多错误的原因)。这是虫子吗
谢谢!
Federico按行名称对a
数据进行子集设置。帧
使用部分匹配,如下所述:
[和[[提取方法]都部分匹配行名称。默认情况下
两者都不部分匹配列名,但[[如果精确=FALSE,则将匹配]
(如果精确=NA,则带有警告)。如果要在
行名称使用匹配,如示例中所示
如果需要精确匹配,可以使用以下功能,例如:
# partial matching does not work
jo[match("chrF1_18000",row.names(jo)),]
# chr bin EURO.hz
# NA <NA> NA NA
# exact matching works
jo[match("chrF1_18000000",row.names(jo)),]
# chr bin EURO.hz
# chrF1_18000000 chrF1 18000000 410
#部分匹配不起作用
jo[匹配(“chrF1_18000”,行名称(jo)),]
#chr bin EURO.hz
#娜娜娜
#精确匹配工作
jo[匹配(“chrF1_18000000”,行名称(jo)),]
#chr bin EURO.hz
#chrF1_18000000 chrF1 18000000 410
或使用子集
subset(jo, rownames(jo)=="chrF1_1800")
#[1] chr bin EURO.hz
#<0 rows> (or 0-length row.names)
subset(jo, rownames(jo)=="chrF1_18000000")
# chr bin EURO.hz
#chrF1_18000000 chrF1 18000000 410
一些R专家似乎建议永远不要使用行名。我正在考虑他们的观点。
chr bin EURO.hz
chrF1_18000000 chrF1 18000000 410
# partial matching does not work
jo[match("chrF1_18000",row.names(jo)),]
# chr bin EURO.hz
# NA <NA> NA NA
# exact matching works
jo[match("chrF1_18000000",row.names(jo)),]
# chr bin EURO.hz
# chrF1_18000000 chrF1 18000000 410
subset(jo, rownames(jo)=="chrF1_1800")
#[1] chr bin EURO.hz
#<0 rows> (or 0-length row.names)
subset(jo, rownames(jo)=="chrF1_18000000")
# chr bin EURO.hz
#chrF1_18000000 chrF1 18000000 410
jo[grep("\\<chrF1_1800\\>",row.names(jo)),]
#[1] chr bin EURO.hz
#<0 rows> (or 0-length row.names)