将参数传递给subset()和unique()

时间:2016-01-27 21:23:56

标签: r parameter-passing subset phyloseq

我正在使用phyloseq包。

test <- function( ...){

bar <- unique(sampleData[,'pH'])

foo <- subset_samples(phyloseqObject, pH == as.numeric(bar[1]@.Data))
print(foo)

}

test(pH)

我想将 pH 作为test()的参数传递,但unique()不会将其视为有效。我可以将'pH'传递给test(),但subset_samples()不会接受该效果。我试图将论证强制转换为几种不同的类型而没有运气。

子集样本的SORCE:

subset_samples <- function(physeq, ...){
    if( is.null(sample_data(physeq)) ){ 
        cat("Nothing subset. No sample_data in physeq.\n")
        return(physeq)
    } else {
        oldDF <- as(sample_data(physeq), "data.frame")
        newDF <- subset(oldDF, ...)
        if( class(physeq) == "sample_data" ){
            return(sample_data(newDF))
        } else {
            sample_data(physeq) <- sample_data(newDF)
            return(physeq)
        }
    }
}

2 个答案:

答案 0 :(得分:1)

请改为尝试:

test=function(x,...){
   bar=unique(mtcars[,x])
   foo=subset(mtcars,mtcars[,x]==bar[1])
   return(foo)
}

答案 1 :(得分:0)

以@desc所说的为基础,我设法解决了这个问题:

test <- function(...){

    bar <- unique(sampleData[,...])

    foo <- subset_samples(phyloseqObject, eval(parse(bar@names)) == as.numeric(bar[1]))
    print(foo)

}

test('pH')