data<-read.csv("advanced_r_programming/data/MIE.csv")
LongitudinalData<-function(n_sub){
structure(n_sub, class = "LongitudinalData" )
}
make_LD<-function(x){
LongitudinalData(sum(as.logical(unique(x$id))))
}
print.LongitudinalData<-function(x){
paste("Longitudinal dataset with", x[n_sub], "subjects")
}
x<-make_LD(data)
print(x)因此,这将返回“带有NA主题的纵向数据集”,如何让它返回存储在对象的字段中的数字?
发布于 2017-12-29 08:25:53
在S3对象系统中,对象是使用list()函数作为structure()的参数来构造的。如果您进行以下更改,您的代码将按预期工作。
LongitudinalData<-function(n_sub){
structure(list(n_sub = n_sub), class = "LongitudinalData" )
}
make_LD<-function(x){
LongitudinalData(sum(as.logical(unique(x$id))))
}
print.LongitudinalData<-function(x){
paste("Longitudinal dataset with", x["n_sub"], "subjects")
}
data<-read.csv("./data/MIE.csv",header=TRUE,stringsAsFactors=FALSE,nrows=100)
x<-make_LD(data)
print(x)当我们读取MIE.csv文件的前100行时,对输出执行...and:
> data<-read.csv("./data/MIE.csv",header=TRUE,stringsAsFactors=FALSE,nrows=100)
> x<-make_LD(data)
> print(x)
[1] "Longitudinal dataset with 1 subjects"
> 下面是我们读取整个MIE.csv文件,并用SQL查询交叉检查它时发生的事情。
> data<-read.csv("./data/MIE.csv",header=TRUE,stringsAsFactors=FALSE)
> x<-make_LD(data)
> print(x)
[1] "Longitudinal dataset with 10 subjects"
>
> # verify with an SQL query
>
> library(sqldf)
> sqldf('select count(distinct id) from data')
count(distinct id)
1 10
> https://stackoverflow.com/questions/48015271
复制相似问题