如何将列表项添加到 r 中另一个列表内的新数据框列?
How to add list items to a new dataframe column inside another list in r?
我正在尝试提取 pubmed 上所有出版物的合著者姓名和隶属关系。我能够在数据框中获取作者姓名列表,但现在我需要添加该姓名的从属关系。我一直在尝试这样做,但我不确定该怎么做。
我需要合并两个列表:作者和每个作者的隶属关系。
query = "an author's name"
res <- EUtilsSummary(query, db="pubmed", mindate=2015, maxdate=2019)
QueryCount(res)
auths <- Author(EUtilsGet(res))
affs <- Affiliation(EUtilsGet(res))
Last<-sapply(auths, function(x)paste(x$LastName, x$ForeName, sep = ", "))
auths2<-as.data.frame(sort(table(unlist(Last)), dec=TRUE))
names(auths2)<-c("name")
auths2
我正在使用 RISMed 提取数据。我想要以下格式的数据:
姓氏,名字隶属关系
我不关心计数。
我想换一种方式来看待这个问题是这样的:
合并两个列表。
list A是一个dataframe列表:这个列表中有多个项目,每个项目有以下内容
LastName ForeName Initials
A B AB
C D CD
列表 B 是列表的列表:
Affiliations:
"X university"
"Y University"
我想要做的是将这两个列表组合在一起,以便每个作者的隶属关系显示为数据框上的一列。最终结果如下:
LastName ForeName Initials Affiliations
A B AB "X University"
C D CD "Y University"
由于某些查询可以 return NA
作者的值和零长度的隶属关系向量,我做了一个小函数,如果两个列表条目都正确,则只有 cbind()
值:
special_cbind = function(authors,affiliations){
if(length(affiliations) == 0 | all(is.na(authors)) ){
authors
}
else if(nrow(authors) == length(affiliations)){
cbind(authors,affiliations)
}
else{
affiliations = rep(affiliations,nrow(authors))
cbind(authors,affiliations)
}
}
然后使用 Map 将其应用于每个列表条目。
Map(special_cbind,auths,affs)
这对您的数据有用吗?
我正在尝试提取 pubmed 上所有出版物的合著者姓名和隶属关系。我能够在数据框中获取作者姓名列表,但现在我需要添加该姓名的从属关系。我一直在尝试这样做,但我不确定该怎么做。
我需要合并两个列表:作者和每个作者的隶属关系。
query = "an author's name"
res <- EUtilsSummary(query, db="pubmed", mindate=2015, maxdate=2019)
QueryCount(res)
auths <- Author(EUtilsGet(res))
affs <- Affiliation(EUtilsGet(res))
Last<-sapply(auths, function(x)paste(x$LastName, x$ForeName, sep = ", "))
auths2<-as.data.frame(sort(table(unlist(Last)), dec=TRUE))
names(auths2)<-c("name")
auths2
我正在使用 RISMed 提取数据。我想要以下格式的数据:
姓氏,名字隶属关系
我不关心计数。
我想换一种方式来看待这个问题是这样的:
合并两个列表。
list A是一个dataframe列表:这个列表中有多个项目,每个项目有以下内容
LastName ForeName Initials
A B AB
C D CD
列表 B 是列表的列表:
Affiliations:
"X university"
"Y University"
我想要做的是将这两个列表组合在一起,以便每个作者的隶属关系显示为数据框上的一列。最终结果如下:
LastName ForeName Initials Affiliations
A B AB "X University"
C D CD "Y University"
由于某些查询可以 return NA
作者的值和零长度的隶属关系向量,我做了一个小函数,如果两个列表条目都正确,则只有 cbind()
值:
special_cbind = function(authors,affiliations){
if(length(affiliations) == 0 | all(is.na(authors)) ){
authors
}
else if(nrow(authors) == length(affiliations)){
cbind(authors,affiliations)
}
else{
affiliations = rep(affiliations,nrow(authors))
cbind(authors,affiliations)
}
}
然后使用 Map 将其应用于每个列表条目。
Map(special_cbind,auths,affs)
这对您的数据有用吗?