r语言Error in rankings.append(rank) : could not find function "rankings.append"
时间: 2024-04-13 09:28:52 浏览: 14
抱歉,我之前给出的示例代码中有一个错误。在 R 语言中,没有类似于 Python 中的 append() 函数来向列表中添加元素。相反,可以使用 c() 函数来合并向量或列表。以下是修正后的示例代码:
```R
rankings <- c()
for (i in 1:10) { # 示例循环10次
rank <- i # 获取当前排名
rankings <- c(rankings, rank) # 将当前排名添加到列表中
}
print(rankings) # 打印所有排名
```
这里使用了 `c()` 函数将当前排名 `rank` 添加到 `rankings` 列表中。请注意,我还修复了循环的起始索引,从1开始,以符合 R 语言的索引习惯。在实际应用中,你需要根据具体需求进行调整。
相关问题
针对以下python代码的解释以及实验小结import requests from bs4 import BeautifulSoup import re #创建获取网页数据的函数geunivText def getnuivText(url): try: r = requests.get(url) r.raise_for_status r.encoding = r.apparent_encoding return r.text except: return '' #创建解析函数并将爬取的目标数据存储 def fillunivList(ulist,html): soup = BeautifulSoup(html,'html.parser') for tr in soup.find('tbody').children: tds = tr.find_all('td') temp = [] for i in [0,1,4,5]: if i != 1: t = tds[i].string temp.append(re.sub('\s*|\n','',t)) else: t = tds[i].find('a') temp.append(t.string) ulist.append(temp) return ulist #创建打印函数 def printunivRank(ulist,num): print('{0:^4}\t{1:^10}\t\t{2:^5}\t{3:^5}'.format('排名','大学名称','总分','办学层次')) for i in range(num): a,b,c,d = ulist[i] print('{0:{4}^4}\t{1:{4}^10}\t{2:{4}^5}\t{3:{4}^5}'.format(a,b,c,d,chr(12288))) def main(): url = 'https://www.shanghairanking.cn/rankings/bcur/2021' html_text = getnuivText(url) unlist = [] fillunivList(unlist,html_text) print(printunivRank(unlist,20)) main()
这段 Python 代码使用了 requests、BeautifulSoup 和 re 三个库,爬取了上海交通大学的 2021 年度排名信息。具体实现过程如下:
1. 定义了一个函数 getnuivText,用于获取指定 url 的网页内容,利用 requests 库的 get 方法,获取网页内容,并利用 raise_for_status 方法判断是否获取成功,最后返回获取到的网页内容。
2. 定义了一个函数 fillunivList,用于解析获取到的网页内容,并将排名信息存储到一个 list 中,该函数接受两个参数:ulist 和 html,其中 ulist 为存储排名信息的 list,html 为网页内容。通过 BeautifulSoup 库将网页内容解析成 XML 格式,并通过 find 方法找到 tbody 标签中的所有子元素,即 tr 标签中的所有数据。然后遍历每个 tr 标签中的 td 标签,并将 td 中的内容提取出来,存储到一个临时 list 中,最后将临时 list 添加到 ulist 中。最后函数返回 ulist。
3. 定义了一个函数 printunivRank,用于打印排名信息,该函数接受两个参数:ulist 和 num,其中 ulist 为存储排名信息的 list,num 为需要打印的排名个数。函数首先打印表头信息,然后遍历 ulist 中的前 num 个元素,依次打印排名信息。
4. 定义了主函数 main,用于调用上述两个函数,实现爬取和打印排名信息的功能。首先指定要爬取的 url,然后调用 getnuivText 函数获取网页内容,接着调用 fillunivList 函数解析网页内容,并将排名信息存储到一个 list 中。最后调用 printunivRank 函数打印排名信息。
总的来说,这段代码主要实现了爬取和解析网页内容,并将获取到的排名信息打印出来。
import requests from bs4 import BeautifulSoup allUniv = [] def getHTMLText(url): try: r = requests. get(url, timeout=30) r.raise_for_status() r.encoding ='utf-8' return r.text except: return '' def fillUnivList(soup): data = soup.find_all('tr') for tr in data: ltd = tr.find_all('td') if len(ltd)==0: continue singleUniv =[] for td in ltd: if '大学' in td.text: field=td.text.split(' ')[1] else: field=td.text.replace('\n','').replace(' ','') singleUniv.append(field) allUniv.append(singleUniv) def printUnivList(num): print('{:<4}{:<10}{:<5}{:<8}{:<8}'.format('排名','学校名称','省市','总分','人才培养')) for i in range(num): u=allUniv[i] print('{:<4}{:<10}{:<5}{:<8}{:<8}'.format(u[0],u[1],u[2],u[4],u[5])) def main(): url = 'https://www.shanghairanking.cn/rankings/bcur/2023' html = getHTMLText(url) soup = BeautifulSoup(html, 'html.parser') fillUnivList(soup) printUnivList(10) main()
这段代码是爬取 2023 年上海交通大学世界大学学术排名的前 10 名大学,并输出这些大学的排名、名称、省市、总分、人才培养等信息。具体实现过程包括:定义 getHTMLText 函数获取指定 url 的 html 文本,定义 fillUnivList 函数解析 html 并将所需信息存入 allUniv 列表中,定义 printUnivList 函数输出前 num 个大学的信息,最后在 main 函数中调用以上三个函数实现主要功能。