R 定义用于选择数据的函数

R 定义用于选择数据的函数,r,R,让我们从我的数据开始 > dput(head(tbl_ready)) ## To make it clear I didn't put all of the row names structure(list(Gene_name = structure(1:6, .Label = c("AT1G01050", "AT1G01080", "AT1G01090", "AT1G01220", "AT1G01320", "AT1G01420", "AT1G01470", "AT1G018

让我们从我的数据开始

    > dput(head(tbl_ready)) ## To make it clear I didn't put all of the row names
structure(list(Gene_name = structure(1:6, .Label = c("AT1G01050", 
"AT1G01080", "AT1G01090", "AT1G01220", "AT1G01320", "AT1G01420", 
"AT1G01470", "AT1G01800", "AT1G01910", "AT1G01920", "AT1G01960", 
"AT5G66570", "AT5G66720", "AT5G66760", "AT5G67150", "AT5G67360", 
"ATCG00120", "ATCG00160", "ATCG00170", "ATCG00190", "ATCG00380", 
"ATCG00470", "ATCG00480", "ATCG00490", "ATCG00500", "ATCG00650", 
"ATCG00660", "ATCG00670", "ATCG00750", "ATCG00770", "ATCG00780", 
"ATCG00800", "ATCG00810", "ATCG00820", "ATCG01090", "ATCG01110", 
"ATCG01120", "ATCG01240", "ATCG01300", "ATCG01310", "ATMG01190"
), class = "factor"), `10` = c(0, 0, 0, 0, 0, 0), `20` = c(0, 
0, 0, 0, 0, 0), `52.5` = c(0, 1, 0, 0, 0, 0), `81` = c(0, 0.660693687777888, 
0, 0, 0, 0), `110` = c(0, 0.521435654491704, 0, 0, 0, 1), `140.5` = c(0, 
0.437291194705566, 0, 0, 0, 1), `189` = c(0, 0.52204783488213, 
0, 0, 0, 0), `222.5` = c(0, 0.524298383907171, 0, 0, 0, 0), `278` = c(1, 
0.376865096972469, 0, 1, 0, 0), `340` = c(0, 0, 0, 0, 0, 0), 
    `397` = c(0, 0, 0, 0, 0, 0), `453.5` = c(0, 0, 0, 0, 0, 0
    ), `529` = c(0, 0, 0, 0, 0, 0), `580` = c(0, 0, 0, 0, 0, 
    0), `630.5` = c(0, 0, 0, 0, 0, 0), `683.5` = c(0, 0, 0, 0, 
    0, 0), `735.5` = c(0, 0, 0, 0, 0, 0), `784` = c(0, 0, 0.476101907006443, 
    0, 0, 0), `832` = c(0, 0, 1, 0, 0, 0), `882.5` = c(0, 0, 
    0, 0, 0, 0), `926.5` = c(0, 0, 0, 0, 1, 0), `973` = c(0, 
    0, 0, 0, 0, 0), `1108` = c(0, 0, 0, 0, 0, 0), `1200` = c(0, 
    0, 0, 0, 0, 0)), .Names = c("Gene_name", "10", "20", "52.5", 
"81", "110", "140.5", "189", "222.5", "278", "340", "397", "453.5", 
"529", "580", "630.5", "683.5", "735.5", "784", "832", "882.5", 
"926.5", "973", "1108", "1200"), row.names = c(NA, 6L), class = "data.frame")
查看列的名称(仅选取其中的6列):

这些名字告诉我尺码范围。第一列中的基因大小从10开始,到第二列的开始=20为止。这意味着第一列应该属于大小在10-20之间的基因

我有另一张表,它告诉我所有基因的大小(比我第一张表中能找到的要多得多):

现在是主要部分。我想用我的代码实现什么

所以,我试图只找到那些在部分(列)中发现的基因,它们的大小范围是基因实际大小的两倍。不知道你是否明白我想做什么,让我举个例子

让我们假设我们有一个基因:

  Names      Size      
    AT1G01080     40
    AT1G01090     30
    AT1G01220     50
让我们将大小乘以2:

    Names        Size      
    AT1G01080     80
    AT1G01090     60
    AT1G01220     100
在第一个表(
tbl_ready
)中,我们可以找到由大小定义的基因和特定部分(列)的列表,我在本线程的开头解释了这一点。如果可以在分数(列)中找到任何基因,并且该分数(列)至少不高于基因大小的两倍,我想将0替换为任何值

要找到基因的大小,您必须查看第二个表(
tbl\u size

总而言之。我试图确定这些基因中哪一个至少是2的复合体。所以只有比基因大两倍的部分对我来说才重要


如果有人知道我想做什么,请编辑我的问题,使其可读。我觉得我的大脑已经死了。

首先,将列转换为它们的数值:

frac <- as.numeric(colnames(tbl_ready))
frac <- as.numeric(colnames(tbl_ready))

frac首先,将列转换为数值:

frac <- as.numeric(colnames(tbl_ready))
frac <- as.numeric(colnames(tbl_ready))

frac我将更改我的原始答案,这次使用您提供的数据-唯一真正的区别是您更改了列名(我假设tbl_中的列
tp
大小是我们需要与tbl_ready中的列标题匹配的内容),表大小中的一些行与tbl\U ready不对应


首先,将列转换为其数值:

frac <- as.numeric(colnames(tbl_ready))
frac <- as.numeric(colnames(tbl_ready))

frac我将更改我的原始答案,这次使用您提供的数据-唯一真正的区别是您更改了列名(我假设tbl_中的列
tp
大小是我们需要与tbl_ready中的列标题匹配的内容),表大小中的一些行与tbl\U ready不对应


首先,将列转换为其数值:

frac <- as.numeric(colnames(tbl_ready))
frac <- as.numeric(colnames(tbl_ready))

frac我发现很难理解你的要求。您能否将示例数据简化为该问题所需的最小数据(例如,去除不需要的变量),并为您提供的输入数据提供一整套预期输出?您是否需要根据
tbl_size$locus==tbl_ready$Gene_name
匹配表格?因为您的示例数据没有显示任何重叠。我仍然不清楚你想要的输出是什么。我需要特定基因的大小来确定特定基因是作为单体还是作为与任何其他基因的复合物。这就是为什么我需要去除所有作为单体出现的“峰”。我能做的唯一办法是有一张包含所有基因及其大小的大桌子和另一张实验桌子。毫无疑问,我的样本数据中的所有基因都可以在
tbl\u size
中找到。我发现很难理解你的要求。您能否将示例数据简化为该问题所需的最小数据(例如,去除不需要的变量),并为您提供的输入数据提供一整套预期输出?您是否需要根据
tbl_size$locus==tbl_ready$Gene_name
匹配表格?因为您的示例数据没有显示任何重叠。我仍然不清楚你想要的输出是什么。我需要特定基因的大小来确定特定基因是作为单体还是作为与任何其他基因的复合物。这就是为什么我需要去除所有作为单体出现的“峰”。我能做的唯一办法是有一张包含所有基因及其大小的大桌子和另一张实验桌子。显然,我的样本数据中的所有基因都可以在
tbl\u size
中找到。我用从代码中得到的错误编辑了你的答案。知道什么地方可能有问题吗?问题很可能在这里:
>ind list()
。列表为空,因此索引代码可能有问题。可能是资本化问题。在您的帖子中,您的
size
size
都是
tbl_size
的列-我猜了一下您真正指的是哪一列。data.frame的名称有问题(tbl_size 2而不是tbl_size),但它仍然没有解决问题。vector
ind
现在充满了数字,但仍然得到相同的错误<代码>>rowI=rep(匹配(tbl_size$locus,tbl_ready[,1]),times=ind-1)ind-1中的错误:二进制运算符的非数值参数
我上传了一个工作区,如果它能帮助您,我会用从代码中得到的错误编辑您的答案。知道什么地方可能有问题吗?问题很可能在这里:
>ind list()
。列表为空,因此索引代码可能有问题。可能是资本化问题。在您的帖子中,您的
size
size
都是
tbl_size
的列-我猜了一下您真正指的是哪一列。data.frame的名称有问题(tbl_size 2而不是tbl_size),但它仍然没有解决问题。vector
ind
现在充满了数字,但仍然得到相同的错误<代码>>rowI=rep(匹配(tbl_大小$LOCATE,tbl_ready[,1]),时间=ind-1)ind-1中的错误:二进制运算符的非数字参数