【发布时间】:2020-12-24 18:49:27
【问题描述】:
我正在尝试编写一个返回数据帧的函数。基本上,目标是拥有三列:一列列出某个标识符,一列报告该标识符在数据集 A 的一列中出现的频率,另一列报告该标识符在数据集 B 的一列中出现的频率。我写了这个功能并且无法弄清楚为什么它正在打印而不是存储为数据框。这特别令人费解,因为当我在函数外部运行“if”循环时,它会创建所需的数据框。任何帮助将不胜感激。
数据样本是:
UOF$identifier Citations$identifier
1545 1712
1588 646
1640 1545
1545 1645
1545 646
1588 1545
1640
1640
我希望这个函数返回:
value instances in dataset 1 instances in dataset 2
1545 3 2
1588 2 0
1640 1 2
join_analysis<-function(column_name_fromdataset1, column_name_fromdataset2){
Dataset1<-as.numeric(column_name_fromdataset1)
Dataset2<-as.numeric(column_name_fromdataset2)
unique_values1<-unique(Dataset1)
count<-data.frame(matrix(NA,nrow=length(Dataset2),ncol=3))
for (i in 1:length(unique_values1)){
ID<-unique_values1[i]
count[,3][i]<-sum(Dataset2==ID, na.rm = TRUE)
count[,2][i]<-sum(Dataset1==ID, na.rm=TRUE)
count[,1][i]<-unique_values1[i]
}
colnames(count)<-cbind("value","instances in dataset 1", "instances in dataset 2")
return(as.data.frame(count))
}
【问题讨论】:
-
如果您将列名作为字符串传递给函数,那么您需要在转换为数字之前根据列名对列进行子集化