我正在尝试建立一个函数,它使用y参数对数据帧进行子集化,然后计算y.p
列的最小值。然后,使用y.p
列的最小值来对与列c
相关的相同数据帧进行子集化。
b <- function (y) {
df<- read.csv("C:/../.csv", colClasses="character")
y.p<-paste("d",y, sep=".")
minimum=min(min.outcome<-as.numeric(data.frame[,y.p]),na.rm=T)
df[df$y.p==minimum,"c"]
}
这是数据框的一部分:https://www.dropbox.com/s/y3152d1ki1ot232/Classeur2.csv
运行该功能后,我得到了character(0)
!
我已经逐行测试了功能,错误似乎在最后一行..
你可以帮我解决这个问题吗?
谢谢,
答案 0 :(得分:0)
好吧说实话,很难说出你想要完成什么,但我认为你希望能够将字符值传递给y
,如果您正在阅读的数据有多个以d.
开头的列?无论如何,如果这是不正确的,请逐步完成你想要做的事情。
Foo <- function(y){
df <- read.csv(
file="G:/Classeur2.csv",
header=TRUE,
colClasses=c(
'numeric',
rep('character',4))
)
##
df[,3:5] <- sapply(3:5, function(X){
df[,X] <- as.numeric(
gsub("Not Available",NA,df[,X])
)
})
##
y.p <- paste("d",y,sep=".")
ypCol <- match(y.p,names(df))
##
minimum <- min(
df[,ypCol],
na.rm=TRUE
)
##
dOut <- df[df[,ypCol]==minimum,"c"]
dOut <- dOut[!is.na(dOut)]
return(dOut)
}
##
Foo(y="y")
## [1] "HOSPITAL SYSTEM"