首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象元素的粘贴函数返回NA

对象元素的粘贴函数返回NA
EN

Stack Overflow用户
提问于 2017-12-29 06:40:40
回答 1查看 69关注 0票数 0
代码语言:javascript
复制
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主题的纵向数据集”,如何让它返回存储在对象的字段中的数字?

EN

回答 1

Stack Overflow用户

发布于 2017-12-29 08:25:53

在S3对象系统中,对象是使用list()函数作为structure()的参数来构造的。如果您进行以下更改,您的代码将按预期工作。

代码语言:javascript
复制
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:

代码语言:javascript
复制
> 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查询交叉检查它时发生的事情。

代码语言:javascript
复制
> 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
> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48015271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档