Что-то странное, конечно, происходит - это все сообщение об ошибке?
Если я верну ваш код к основам и закомментирую все, что я не могу запустить, потому что у меня нет вашегоВ файле данных, следующая функция работает без ошибок:
dynamicwilcox <- function(column,datacol) {
##dat <- read.table("all.txt") ## probably not good to call something t
if(column=="Ph") {
##uniphy=unique(c(t$Phylum))
##print(uniphy)
writeLines("column was 'Ph'")
}
if(column=="Cl") {
##uniclass = unique(c(t$Class))
##print(uniclass)
writeLines("column was 'Cl'")
}
}
R> dynamicwilcox("Ph", "A")
column was 'Ph'
Возможно, вы могли бы начать с приведенного выше кода и посмотреть, работает ли он для вас, и если он работает, построить на нем.
Что касается dynamicwilcox(Ph, A)
работы, он не может работать, если вы уже не определили объекты Ph
и A
в текущей среде.Он ничего не печатает, потому что все, что хранится в Ph
, равно , а не равно "Ph"
или "Cl"
.Что вы получите, если запустите эти две строки?:
R> Ph
R> A
Надеюсь, это объяснит, почему этот способ вызова вашей функции не удался.
Обновление: Что касаетсяизменяя функцию на использование readline()
, чтобы она принимала пользовательский ввод, вот одна из версий:
dynamicwilcox <- function() {
ANSWER <- readline("What column do you want to work on? ")
if(ANSWER=="Ph") {
writeLines("column was 'Ph'")
} else if(ANSWER=="Cl") {
writeLines("column was 'Cl'")
} else {
writeLines(paste("Sorry, we don't know what to do with column", ANSWER))
}
ANSWER ## return something
}
Здесь она используется:
R> dynamicwilcox()
What column do you want to work on? Ph
column was 'Ph'
[1] "Ph"
R> dynamicwilcox()
What column do you want to work on? Cl
column was 'Cl'
[1] "Cl"
R> dynamicwilcox()
What column do you want to work on? FooBar
Sorry, we don't know what to do with column FooBar
[1] "FooBar"
Но читайте ?readline
какв одном из примеров вы можете извлечь из него нечто подобное.