函数不';t将调用参数视为R中的值
这是我的职责函数不';t将调用参数视为R中的值,r,function,dataframe,R,Function,Dataframe,这是我的职责 test_gene <- function(gene, gene_data, gene_col) {with(gene_data, gene_data[(get(gene_col) == gene),]) } 我想从我的数据框(tibble)中筛选特定的基因,但它在函数调用中不起作用。如果我像这样在控制台中输入它,它就会工作。这就好像R不会将调用参数gene作为一个值来计算。我尝试了filter(),但也不起作用 with(df, df[(gene == "CXCR4")
test_gene <- function(gene, gene_data, gene_col)
{with(gene_data, gene_data[(get(gene_col) == gene),])
}
我想从我的数据框(tibble)中筛选特定的基因,但它在函数调用中不起作用。如果我像这样在控制台中输入它,它就会工作。这就好像R不会将调用参数gene作为一个值来计算。我尝试了filter(),但也不起作用
with(df, df[(gene == "CXCR4"),])
test_gene(gene = "CXCR4",gene_data = df, gene_col = "gene")
#一个tible:48 x 15
样本名称基因cp cp图delta cp delta cp图delta cp控制…delta cp delta cp lfc基因组
1 c1_50 CD24 31.7 31.7 8.09 8.09 8.51-0.418 0.418 1.34目标
2 c1_90 CD24 32.0 32.0 8.06 8.06 8.51-0.447 0.447 1.36目标
3 c2_50 CD24 32.1 32.1 8.60 8.60 8.51 0.0877-0.0877 0.941目标
4 c2_90 CD24 31.2 31.2 8.62 8.62 8.51 0.110-0.110 0.927目标
5 c3_50 CD24 31.6 31.6 8.61 8.61 8.51 0.105-0.105 0.930目标
6 c3_90 CD24 31.8 31.8 9.07 9.07 8.51 0.563-0.563 0.677目标
7 sp1_50 CD24 32.9 32.9 7.43 7.43 8.51-1.08 1.08 2.12目标
8 sp1_90 CD24 34.7 34.7 7 7.70 8.51-0.806 0.806 1.75目标
9 sp2_50 CD24 32.3 32.3 6.75 6.75 8.51-1.76 1.76 3.39目标
10 sp2_90 CD24 33.1 33.1 7.46 7.46 8.51-1.05 1.05 2.07目标
#…又有38行和4个变量:样本组代码、petri数、合流、,
#样本组
您最初的试验离目标不远。这只是一个组织问题。基因
字符串被搞糊涂了。考虑
df <-structure(list(sample_name = structure(1:10, .Label = c("c1_50",
"c1_90", "c2_50", "c2_90", "c3_50", "c3_90", "sp1_50", "sp1_90",
"sp2_50", "sp2_90"), class = "factor"), gene = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L), .Label = c("CD24", "CXCR4"
), class = "factor")), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "0"))
欢迎来到stackoverflow。你能提供你的数据样本并粘贴抛出的准确错误吗?嗨!它不会抛出错误,它只是返回数据帧,因为没有键入任何内容,这是否在函数中起作用:
gene\u data%>%filter(!!rlang::sym(gene\u col)==gene)
Nope,不起作用:/我认为问题在于您有两个名为gene
的对象。尝试将函数中的gene
参数重命名为例如gene\u name
,然后再次尝试我之前的建议。。。这样行吗?
# A tibble: 48 x 15
sample_name gene cp cp_plot delta_cp delta_cp_plot delta_cp_contro… delta_delta_cp lfc fc gene_group
<chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <fct>
1 c1_50 CD24 31.7 31.7 8.09 8.09 8.51 -0.418 0.418 1.34 target
2 c1_90 CD24 32.0 32.0 8.06 8.06 8.51 -0.447 0.447 1.36 target
3 c2_50 CD24 32.1 32.1 8.60 8.60 8.51 0.0877 -0.0877 0.941 target
4 c2_90 CD24 31.2 31.2 8.62 8.62 8.51 0.110 -0.110 0.927 target
5 c3_50 CD24 31.6 31.6 8.61 8.61 8.51 0.105 -0.105 0.930 target
6 c3_90 CD24 31.8 31.8 9.07 9.07 8.51 0.563 -0.563 0.677 target
7 sp1_50 CD24 32.9 32.9 7.43 7.43 8.51 -1.08 1.08 2.12 target
8 sp1_90 CD24 34.7 34.7 7.70 7.70 8.51 -0.806 0.806 1.75 target
9 sp2_50 CD24 32.3 32.3 6.75 6.75 8.51 -1.76 1.76 3.39 target
10 sp2_90 CD24 33.1 33.1 7.46 7.46 8.51 -1.05 1.05 2.07 target
# … with 38 more rows, and 4 more variables: sample_group_code <fct>, petri_number <fct>, confluence <fct>,
# sample_group <fct>
df <-structure(list(sample_name = structure(1:10, .Label = c("c1_50",
"c1_90", "c2_50", "c2_90", "c3_50", "c3_90", "sp1_50", "sp1_90",
"sp2_50", "sp2_90"), class = "factor"), gene = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L), .Label = c("CD24", "CXCR4"
), class = "factor")), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "0"))
test_gene <- function(gene_data, col, val) {
## Data Definition
## gene_data . a data.frame
## col . a string representing a column name in gene_data
## val . a string representing a value of col in gene_data
with(gene_data, gene_data[get(col) == val,])
}
test_gene(col="gene",val = "CXCR4",gene_data = df)
## sample_name gene
## 0 sp2_90 CXCR4