頭條創作挑戰賽# 在 Excel VBA 中,HTMLDOMNode 對象是表示 HTML 文檔中的節點的對象。它是 HTMLDOMElement 和 HTMLDOMText 對象的基類。節點可以是 HTML 元素、屬性、文本或注釋。您可以使用 HTMLDOMNode 對象來訪問和操作 HTML 文檔中的節點,例如更改元素的屬性或添加新元素。
以下是 6 個 Excel VBA 代碼示例,用于說明如何使用 HTMLDOMNode 對象:
1、獲取元素的屬性值
Dim element As HTMLDOMElement
Set element=document.getElementById("myElement")
MsgBox element.getAttribute("class")
2、設置元素的屬性值
Dim element As HTMLDOMElement
Set element=document.getElementById("myElement")
element.setAttribute "class", "newClass"
3、獲取元素的文本內容
Dim element As HTMLDOMElement
Set element=document.getElementById("myElement")
MsgBox element.innerText
4、設置元素的文本內容
Dim element As HTMLDOMElement
Set element=document.getElementById("myElement")
element.innerText="New text content"
5、創建新元素并添加到文檔中
Dim newElement As HTMLDOMElement
Set newElement=document.createElement("div")
newElement.innerText="New element content"
document.body.appendChild newElement
6、刪除元素
Dim element As HTMLDOMElement
Set element=document.getElementById("myElement")
element.parentNode.removeChild element
下面是一個完整的代碼示例,它演示了如何使用 HTMLDOMNode 對象來獲取和修改 HTML 頁面中的元素:
Sub ModifyHTMLElement()
Dim ie As InternetExplorer
Dim document As HTMLDocument
Dim element As HTMLDOMElement
Set ie=New InternetExplorer
ie.Visible=True
ie.navigate "https://www.example.com"
Do While ie.Busy Or ie.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
Set document=ie.document
Set element=document.getElementById("myElement")
MsgBox "The current text content of the element is: " & element.innerText
element.innerText="New text content"
MsgBox "The new text content of the element is: " & element.innerText
ie.Quit
End Sub
此代碼打開 Internet Explorer 瀏覽器,導航到示例網站,獲取名為“myElement”的元素,并顯示其當前文本內容。然后,它將更改該元素的文本內容,并再次顯示其新內容。最后,它關閉瀏覽器。
使用 HTMLDOMNode 對象時,需要注意以下幾點:
1、需要引用 Microsoft HTML Object Library,否則無法使用 HTMLDOMNode 對象。
2、需要在代碼中實例化 InternetExplorer 和 HTMLDocument 對象,以便訪問和操作 HTML 頁面中的元素。
3、在使用 HTMLDOMNode 對象之前,需要確保已經加載了完整的 HTML 頁面。可以使用 readyState 屬性來檢查頁面是否已經加載完成。
4、在訪問 HTML 元素之前,需要確保它們已經存在于文檔中。可以使用 getElementById() 或其他方法來查找元素。
5、在修改 HTML 元素之前,需要確保它們是可編輯的。例如,只有具有“contenteditable”屬性的元素才能被編輯。
6、在修改 HTML 元素之前,需要確保您具有足夠的權限來進行修改。例如,某些網站可能會通過 JavaScript 禁用對其內容的修改。
7、在刪除 HTML 元素時,需要注意刪除元素的順序。如果您嘗試刪除一個元素的父元素或祖先元素,則可能會引發錯誤。
8、在使用 HTMLDOMNode 對象時,請記得將其設置為 Nothing 以釋放內存。這可以通過將對象變量設置為 Nothing 來實現。
數據文摘作品,轉載要求見文末
作者 | NSS
編譯 | 張伯楠,劉云南
弋心,衛青,寧云州
R語言是數據科學領域最流行的語言之一。如果你真想從事數據科學事業,那你要么已經會用R語言要么正在學習它。R語言同樣是一個擁有廣泛的統計和數據科學庫的生態系統。為了幫助數據科學家測試他們的R語言能力,我們為DataFest 2017設計了一部分技能測試題。
超過1500人注冊了這項考試并有接近500人完成了測試。下圖是不同測試者的成績分布:
下面是關于成績分布的一些統計數據:
平均分:16.69
分數中值:19
眾數:0
下面是這四十道題目的問題和答案,如果錯過了測驗,你還有機會完成這四十道題目,看看自己在R語言上究竟處于什么水平。
友情提示:在使用本文代碼之前,請先清除格式,或查看本文原文網址復制使用。
祝你學習愉快!
1
請看下列函數
f <- function(x) {
g <- function(y) {
y + z
}
z <- 4
x + g(x)
}
1)如果我們執行下列命令(寫在下一行),輸出結果會是什么?
z <- 10
f(4)
A) 12
B) 7
C) 4
D) 16
答案:(A)
R語言的作用域規則(scoping rule)會使z<-4的條件優先于z<-10。因此,g(x)會返回8,所以A選項是正確答案。
2
鳶尾屬植物(iris)數據集包括多種具有不同萼片(sepal)長度的花,如多剛毛類(setosa)、雜色類(versicolor)和維爾吉尼卡(virginica)等。現在,我們想分析所有鳶尾屬花的萼片長度分布。其中之一的解決方法是通過下面所示的圖可視化它們之間的關系。
下列哪個函數能夠用于創建上文所示的圖?
A) xyplot()
B) stripplot()
C) barchart()
D) bwplot()
答案:(B)
上文所繪是條型圖而選項A、C、D會分別產生散點圖、柱狀圖以及箱線圖。因此,B選項是正確答案。
3
Alpha | 125.5 | 0 |
Beta | 235.6 | 1 |
Beta | 212.03 | 0 |
Beta | 211.30 | 0 |
Alpha | 265.46 | 1 |
文件名:Dataframe.csv
3)下列命令哪一項可以在一個數據框架中正確讀取上述csv文件的全部五行內容?
A) csv(‘Dataframe.csv’)
B) csv(‘Dataframe.csv’,header=TRUE)
C) dataframe(‘Dataframe.csv’)
D) csv2(‘Dataframe.csv’,header=FALSE,sep=’,’)
答案:(D)
第一個和第二選項會將數據第一行讀取為變量名。第三個命令不存在,因此,選項D是正確答案。
4
Excel文件格式是最常用的儲存數據文件格式之一。了解如何將Excel文件轉化為R語言格式非常重要。下面是一個Excel文件,其中數據儲存在第三個工作表中。
Alpha | 125.5 | 0 |
Beta | 235.6 | 1 |
Beta | 212.03 | 0 |
Beta | 211.30 | 0 |
Alpha | 265.46 | 1 |
文件名:Dataframe.xlsx
下列哪行代碼可以從Excel工作表3中讀取數據?
A) Openxlsx::read.xlsx(“Dataframe.xlsx”,sheet=3,colNames=FALSE)
B) Xlsx::read.xlsx(“Dataframe.xlsx”,sheetIndex=3,header=FALSE)
C)XLConnect::readWorksheetFromFile(“Dataframe.xlsx”,sheet=3,header=FALSE)
D)All of the above
答案:(D)
上述的全部選項都是正確的,它們采用了不同的方法來將Excel文件讀取入R語言,且都正確讀取了文件。因此,D選項是正確答案。
5
A | 10 | Sam | |
B | 20 | Peter | |
C | 30 | Harry | |
D | ! | ? | |
E | 50 | Mark |
文件名:Dataframe.csv
5)上述csv文件中缺失的值被感嘆號(“!”)和問號(“?”)所代替。下列哪行代表可以正確將上述csv文件讀取進R語言?
A) csv(‘Dataframe.csv’)
B) csv(‘Dataframe.csv’,header=FALSE, sep=’,’,na.strings=c(‘?’))
C) csv2(‘Dataframe.csv’,header=FALSE,sep=’,’,na.strings=c(‘?’,’!’))
D) dataframe(‘Dataframe.csv’)
Solution: (C)
選項A不能在R語言中把“?” 和“!”讀取為“NA”;選項B只能把“?”讀取為“NA”而“!”不能;選項4并不存在。因此,選項C是正確答案。
6
Column 1 | Column 2 | Column 3 | |
Row 1 | 15.5 | 14.12 | 69.5 |
Row 2 | 18.6 | 56.23 | 52.4 |
Row 3 | 21.4 | 47.02 | 63.21 |
Row 4 | 36.1 | 56.63 | 36.12 |
文件名:Dataframe.csv
上述csv文件既有行名稱又有列名稱。下面哪行代碼能夠正確地將該csv文件讀入R語言?
A) delim(‘Train.csv’,header=T,sep=’,’,row.names=TRUE)
B) csv2(‘Train.csv’,header=TRUE, row.names=TRUE)
C) dataframe(‘Train.csv’,header=TRUE,sep=’,’)
D) csv(‘Train.csv’,,header=TRUE,sep=’,’)
答案:(D)
A和B選項中的row.names參數僅僅引用有包含實際行名稱的矢量本身或者一個指向包含行名稱的列值數字,而并非一個有效的邏輯值。選項C并不存在。因此,D選項是正確答案。
7
Column 1 | Column 2 | Column 3 | |
Row 1 | 15.5 | 14.12 | 69.5 |
Row 2 | 18.6 | 56.23 | 52.4 |
Row 3 | 21.4 | 47.02 | 63.21 |
Row 4 | 36.1 | 56.63 | 36.12 |
文件名:Dataframe.csv
下列哪行代碼將只讀取csv文件中的前兩行?
A) csv(‘Dataframe.csv’,header=TRUE,row.names=1,sep=’,’,nrows=2
B) csv2(‘Dataframe.csv’,row.names=1,nrows=2)
C) delim2(‘Dataframe.csv’,header=T,row.names=1,sep=’,’,nrows=2)
D) dataframe(‘Dataframe.csv’,header=TRUE,row.names=1,sep=’,’,skip.last=2)
答案:(A)
因為在csv2函數中的默認分隔符是“;”,而csv文件是“,”,B選項將不能正確讀取csv文件,選項C使用了錯誤的參數值,選項D不存在。因此,選項A是正確答案。
8
Dataframe1Feature1Feature2Feature3Feature4A100025.510B200035.534C300045.578D400055.53 | Dataframe2Feature1Feature2Feature3E500065.5F600075.5G700085.5H800095.5 |
上圖為兩個數據框,數據1和數據2。
下列哪行代碼可以執行出下述結果?
Feature1 | Feature2 | Feature3 |
A | 1000 | 25.5 |
B | 2000 | 35.5 |
C | 3000 | 45.5 |
D | 4000 | 55.5 |
E | 5000 | 65.5 |
F | 6000 | 75.5 |
G | 7000 | 85.5 |
H | 8000 | 95.5 |
A) merge(dataframe[,1:3],dataframe2)
B) merge(dataframe1,dataframe2)[,1:3]
C) merge(dataframe1,dataframe2,all=TRUE)
D) Both 1 and 2
E) All of the above
答案:(D)
C選項會導致融合后的數據框中包含feature 4,而這不是我們想要的結果。因此,D選項是正確答案。
9
V1 | V2 | |
1 | 121.5 | 461 |
2 | 516 | 1351 |
3 | 451 | 6918 |
4 | 613 | 112 |
5 | 112.36 | 230 |
6 | 25.23 | 1456 |
7 | 12 | 457 |
dataframe
R語言中已讀取了一個數據集并存儲在變量“dataframe”中。下列哪行代碼可以實現整個數據集的總結(平均數、中位數、眾數)?
A) summary(dataframe)
B) stats(dataframe)
C) summarize(dataframe)
D) summarise(dataframe)
E) None of the above
答案:(E)
A選項只會給出平均值和中位數,而不會給出眾數。B,C,D選項同樣不能提供所需統計信息。因此,E選項是正確答案。
10
R語言讀取了一數據集并存儲在變量“dataframe”中。缺失值以NA表示。
A | 10 | Sam |
B | NA | Peter |
C | 30 | Harry |
D | 40 | NA |
E | 50 | Mark |
dataframe
下列哪行代碼將不能給出每一列的缺失值?
A) colSums(is.na(dataframe))
B) apply(is.na(dataframe),2,sum)
C) sapply(dataframe,function(x) sum(is.na(x))
D) table(is.na(dataframe))
答案:(D)
D選項將給出缺失值的總數而非每列單獨給出。因此,D選項是正確答案。
11
應用單變量分析檢查數據中的缺失值及其分布是數據分析流程中的重要步驟之一。下列是一個數據集,我們希望能為“Value”變量繪制柱狀圖。
Parameter | State | Value | Dependents |
Alpha | Active | 50 | 2 |
Beta | Active | 45 | 5 |
Beta | Passive | 25 | 0 |
Alpha | Passive | 21 | 0 |
Alpha | Passive | 26 | 1 |
Beta | Active | 30 | 2 |
Beta | Passive | 18 | 0 |
dataframe
下列哪個命令能夠幫助我們完成任務?
A) hist(dataframed$Value)
B) ggplot2::qplot(dataframed$Value,geom=”Histogram”)
C)ggplot2::ggplot(data=dataframed,aes(dataframe$Value))+geom_histogram()
D) All of the above
答案:(D)
所有給出選項都可以繪制柱狀圖并可以查看數據的偏度。
12
Parameter | State | Value | Usage |
Alpha | Active | 50 | 0 |
Beta | Active | 45 | 1 |
Beta | Passive | 25 | 0 |
Alpha | Passive | 21 | 0 |
Alpha | Passive | 26 | 1 |
Beta | Active | 30 | 1 |
Beta | Passive | 18 | 0 |
諸如XGBOOST等算法只對數值數據有效。在這種情況下,數據集中的分類變量將先被轉化為虛擬變量,其可以展示數據集中某個分類是否存在。比如,當對“Parameter”項數據創建虛擬變量后,數據集顯示如下。
Parameter_Alpha | Parameter_Beta | State | Value | Usage |
1 | 0 | Active | 50 | 0 |
0 | 1 | Active | 45 | 1 |
0 | 1 | Passive | 25 | 0 |
1 | 0 | Passive | 21 | 0 |
1 | 0 | Passive | 26 | 1 |
0 | 1 | Active | 30 | 1 |
0 | 1 | Passive | 18 | 0 |
下面中的哪個命令能實現這個功能?
A) dummies:: dummy.data.frame(dataframe,names=c(‘Parameter’))
B) dataframe$Parameter_Alpha=0
dataframe$Gende_Beta=0
dataframe$Parameter_Alpha[which(dataframe$Parameter==’Alpha’)]=1
dataframe$Parameter_Beta[which(dataframe$Parameter==’Alpha’)]=0
dataframe$Parameter_Alpha[which(dataframe$Parameter==’Beta’]=0
dataframe$Parameter_Beta[which(dataframe$Parameter==’Beta’]=1
C) contrasts(dataframe$Parameter)
D)A和B
答案:D
C選項會將Parameter列的值變成兩種類型但不會進行獨熱編碼(one hot encoding)。因此,選項D是正確選擇。
13
Column1 | Column2 | Column3 | Column4 | Column5 | Column6 | |
Name1 | Alpha | 12 | 24 | 54 | 0 | Alpha |
Name2 | Beta | 16 | 32 | 51 | 1 | Beta |
Name3 | Alpha | 52 | 104 | 32 | 0 | Gamma |
Name4 | Beta | 36 | 72 | 84 | 1 | Delta |
Name5 | Beta | 45 | 90 | 32 | 0 | Phi |
Name6 | Alpha | 12 | 24 | 12 | 0 | Zeta |
Name7 | Beta | 32 | 64 | 64 | 1 | Sigma |
Name8 | Alpha | 42 | 84 | 54 | 0 | Mu |
Name9 | Alpha | 56 | 112 | 31 | 1 | Eta |
以上為名為dataframe的變量。
我們想計算數據表中第二列和第三列之間的相關性,下面代碼中的哪個能實現這個目的?
A) corr(dataframe$column2,dataframe$column3)
B) (cov(dataframe$column2,dataframe$column3))/(var(dataframe$column2)*sd(dataframe$column3))
C)
(sum(dataframe$Column2*dataframe$Column3)- (sum(dataframe$Column2)*sum(dataframe$Column3)/nrow(dataframe)))/(sqrt((sum(dataframe$Column2*dataframe$Column2)-(sum(dataframe$Column2)^3)/nrow(dataframe))* (sum(dataframe$Column3*dataframe$Column3)-(sum(dataframe$Column3)^2)/nrow(dataframe))))
D)以上都不是
答案:(D)
在選項A中,corr是錯誤的函數寫法。實際的計算相關性的函數寫法是:cor。在選項B中,分母應該是標準差而不是方差。相似地,選項C中的公式是錯誤的。因此,選項D是正確選擇。
14
Parameter | State | Value | Dependents |
Alpha | Active | 50 | 2 |
Beta | Active | 45 | 5 |
Beta | Passive | 25 | 0 |
Alpha | Passive | 21 | 0 |
Alpha | Passive | 26 | 1 |
Beta | Active | 30 | 2 |
Beta | Passive | 18 | 0 |
以上為名為dataframe的變量。
上述數據集已經加載進了你的R運行空間中,變量名為“dataframe”,第一行代表列名稱。以下哪個代碼將僅選擇參數為Alpha的行?
A) subset(dataframe, Parameter=’Alpha’)
B) subset(dataframe, Parameter==’Alpha’)
C) filter(dataframe,Parameter==’Alpha’)
D) B和C
E) 上面全部
答案:(D)
A選項中,應該用等值運算符取代賦值運算符,因此選項D正確。
15
以下哪個函數用于以電子表格格式觀察數據集?
A) disp()
B) View()
C) seq()
D) 以上全部
答案:(B)
選項B是采用電子表格形式查看數據集的唯一選項。因此選項B是正確答案。
16
下面的數據表存儲在一個名字為“data”的變量中。
A | B |
1 | Right |
2 | Wrong |
3 | Wrong |
4 | Right |
5 | Right |
6 | Wrong |
7 | Wrong |
8 | Right |
data
設定B是一個分類變量,我們需要為每一個分類級別畫一個箱線圖。以下哪一個命令能幫助我們實現這個功能?
A) boxplot(A,B,data=data)
B) boxplot(A~B,data=data)
C) boxplot(A|B,data=data)
D) 以上都不是
答案(B)
R中畫箱線圖的函數要求公式中要有分類因素,通過這些分類因素繪制不同的箱線圖。因此選項B是正確的答案。
17
下面命令中的哪一個能把繪圖窗口分成4×3的窗口?同時繪圖逐列輸入窗口。
A) par(split=c(4,3))
B) par(mfcol=c(4,3))
C) par(mfrow=c(4,3))
D) par(col=c(4,3))
答案:(B)
mfcol命令參數能保證圖像逐列輸入繪圖窗口。因此,選項B是正確答案。
18
一個數據表變量 “df” 具有如下數據:
Dates
2017-02-28
2017-02-27
2017-02-26
2017-02-25
2017-02-24
2017-02-23
2017-02-22
2017-02-21
我們希望把它讀取成如下格式:
28 Tuesday Feb 17
27 Monday Feb 17
26 Sunday Feb 17
25 Saturday Feb 17
24 Friday Feb 17
23 Thursday Feb 17
22 Wednesday Feb 17
21 Tuesday Feb 17
下面命令中的哪些(個)能產生期望的輸出?
A) format(df,”%d %A %b %y”)
B) format(df,”%D %A %b %y”)
C) format(df,”%D %a %B %Y”)
D) 以上都不是
答案: (D)
以上的選項都不能產生期望的輸出。因此選項D是正確答案。
19
下列哪個命令能將數據表“table”的第二列名稱由alpha改成beta
A) colnames(table)[2]=’beta’
B) colnames(table)[which(colnames==’alpha’)]=’beta’
C) setnames(table,’alpha’,’beta’)
D) 以上所有
答案: (D)
上面的選項都是重命名數據表中列名稱的不同方法,因此,選項D是正確答案。
20
R運行中的大部分工作都使用系統內存,如果同時采用大的數據集,當R的工作空間不能保證所有的R對象都保持在內存中時問題就出現了。在這樣的情況下,移除無用的對象是一種解決方法。
下面命令中的哪個或哪些可以從工作空間中移除R對象或變量“santa”?
A) remove(santa)
B) rm(santa)
C) 上面全部
D) 都不是
答案 : (C)
remove 和 rm,都能用于清理工作空間。因此選項C是正確答案。
21
“dplyr”是R中最流行的工具包之一,它包括5個核心數據處理函數。下面選項中的哪一個不是dplyr中的核心函數?
A) select()
B) filter()
C) arrange()
D) summary()
答案: (D)
summary 是R語言基礎工具包中的函數而不是dplyr中的函數。
22
在特征選擇過程(feature selection)中使用下面的數據表(名稱為table),列1和列2已經證明影響不顯著。因此我們不會把這兩個特性加入到我們的預測模型中。
Column1 | Column2 | Column3 | Column4 | Column5 | Column6 | |
Name1 | Alpha | 12 | 24 | 54 | 0 | Alpha |
Name2 | Beta | 16 | 32 | 51 | 1 | Beta |
Name3 | Alpha | 52 | 104 | 32 | 0 | Gamma |
Name4 | Beta | 36 | 72 | 84 | 1 | Delta |
Name5 | Beta | 45 | 90 | 32 | 0 | Phi |
Name6 | Alpha | 12 | 24 | 12 | 0 | Zeta |
Name7 | Beta | 32 | 64 | 64 | 1 | Sigma |
Name8 | Alpha | 42 | 84 | 54 | 0 | Mu |
Name9 | Alpha | 56 | 112 | 31 | 1 | Eta |
table
下面命令中的哪些(個)能選擇“table”中列3到列6中的所有行?
A) dplyr::select(table,Column3:Column6)
B) table[,3:6]
C) subset(table,select=c(‘Column3’,’Column4’,’Column5’,’Column6’))
D) 以上全部
答案: (D)
選項A、B和C都是不同的選取列的方法,所以選項D是正確答案。
23
Column1 | Column2 | Column3 | Column4 | Column5 | Column6 | |
Name1 | Alpha | 12 | 24 | 54 | 0 | Alpha |
Name2 | Beta | 16 | 32 | 51 | 1 | Beta |
Name3 | Alpha | 52 | 104 | 32 | 0 | Gamma |
Name4 | Beta | 36 | 72 | 84 | 1 | Delta |
Name5 | Beta | 45 | 90 | 32 | 0 | Phi |
Name6 | Alpha | 12 | 24 | 12 | 0 | Zeta |
Name7 | Beta | 32 | 64 | 64 | 1 | Sigma |
Name8 | Alpha | 42 | 84 | 54 | 0 | Mu |
Name9 | Alpha | 56 | 112 | 31 | 1 | Eta |
以上為變量名為table的數據表。
下面哪個(些)命令會選取列1中帶有“alpha”值的行,同時選取列4中數值小于50的項?這個數據表存儲在名為“table”的變量中。
A) dplyr::filter(table,Column1==’Alpha’, Column4<50)
B) dplyr::filter(table,Column1==’Alpha’ & Column4<50)
C) 以上全部
D) 以上都不是
答案: (A)
dplyr中的filter函數使用“,”來添加條件,而不是“&”。因此,選項A是正確答案。
24
Column1 | Column2 | Column3 | Column4 | Column5 | Column6 | |
Name1 | Alpha | 12 | 24 | 54 | 0 | Alpha |
Name2 | Beta | 16 | 32 | 51 | 1 | Beta |
Name3 | Alpha | 52 | 104 | 32 | 0 | Gamma |
Name4 | Beta | 36 | 72 | 84 | 1 | Delta |
Name5 | Beta | 45 | 90 | 32 | 0 | Phi |
Name6 | Alpha | 12 | 24 | 12 | 0 | Zeta |
Name7 | Beta | 32 | 64 | 64 | 1 | Sigma |
Name8 | Alpha | 42 | 84 | 54 | 0 | Mu |
Name9 | Alpha | 56 | 112 | 31 | 1 | Eta |
以上為變量名為table的數據表。
下面代碼中的哪些(個)能把數據表基于列2進行升序排列,同時對列3進行降序排列?
A) dplyr::arrange(table,desc(Column3),Column2)
B) table[order(-Column3,Column2),]
C) 以上全部
D) 以上都不是
答案: (C)
order和arrange函數都能用于在R中對列進行分類。因此選項C是正確答案。
25
處理字符串數據(string)是文本分析的一個重要組成部分,當創建參數符號或其它符號時,分割字符串經常是一項常用任務。下面命令行的輸出是什么?
A<-paste("alpha","beta","gamma",sep=" " )
B<-paste("phi","theta","zeta",sep="")
parts<-strsplit(c(A,B),split=” ”)
parts[[1]][2]
A) alpha
B) beta
C) gamma
D) phi
E) theta
F) zeta
答案 : (B)
c(A.B) 將合并 A=”alpha beta gamma” 和 B=”phithetazeta” 并將其通過空格隔開。使用strsplit之后,之前合成的字符串會再次將A,B用空格隔開,分別生成兩個list 。parts[[1]][2]命令旨在顯示第一個list中的第二個元素,是“beta”。因此選項B是正確答案。
26
以下命令的輸出是什么?
grepl(“neeraj”,c(“dheeraj”,”Neeraj”,”neeraj”,”is”,”NEERAJ”))
A) [FALSE TRUE TRUE FALSE TRUE]
B) [FALSE TRUE TRUE FALSE FALSE]
C) [FALSE FALSE TRUE FALSE FALSE]
D) None of the above
答案:(C)
上述命令將檢測集合中的元素是否與前面的“neeraj”完全匹配,因此選項C是正確答案。
27
作為從事文本數據工作的數據科學家,我們有時會遇到這樣一些情況,即發現某個不需要的單詞多次出現。以下就是一個此類的字符串。
A<-c("I can use because thrice in a sentence because because is a special word.")
A) gsub(“because”,”since”,A)
B) sub(“because”,”since”,A)
C) regexec(“because”,”since”,A)
D) None of the above
答案:(A)
sub命令僅替換字符串中第一次出現的單詞,而regexec將返回匹配的位置列表,如果沒有匹配則返回-1。因此,選項A是正確答案。
28
28)想象一個通過以下代碼創建的數據框。
以下哪個命令能夠在這兩列上幫助我們刪除重復行?
A) df[!duplicated(df),]
B) unique(df)
C) dplyr::distinct(df)
D) All of the above
答案:(D)
上述所有答案都是基于這兩列刪除重復行的不同方法。因此,選項D是正確答案。
29
分組(grouping)是數據分析中的一項重要活動,它可以幫助我們發現一些有趣的趨勢,這些趨勢在原始數據中可能并不易被發現。
假設你有一個由以下代碼行創建的數據集。
table<-data.table(foo=c("A","B","A","A","B","A"),bar=1:6)
以下哪個命令能幫我們計算出由foo變量分組的bar變量的平均值?
A) aggregate(bar~foo,table,mean)
B) table::df[,mean(bar),by=foo]
C) dplyr::table%>%group_by(foo)%>%summarize(mean=mean(bar))
D) All of the above
答案:(D)
所有上述方法都可用于計算列的分組統計值。因此,選項D是正確答案。
30
如果我有兩組矢量x < - c(1,3,5)和y <-c(3,2),那么,cbind(x,y)將產生什么?
A)一個兩列三行的矩陣
B)一個三列兩行的矩陣
C)一個兩列三行的數據框
D)一個三列兩行的數據框
答案:(D)
上述所有選項定義的都是雜亂數據,因此選項D是正確答案。
31
下列哪一命令可以把以下名為maverick的數據框轉換為下方顯示的數據框?
輸入數據 ——“maverick”
Grade | Male | Female |
A | 10 | 15 |
B | 20 | 15 |
A | 30 | 35 |
輸出數據
Grade | Sex | Count |
A | Male | 10 |
A | Female | 15 |
B | Male | 30 |
B | Female | 15 |
A | Male | 30 |
A | Female | 35 |
A) tidyr::Gather(maverick, Sex,Count,-Grade)
B) tidyr::spread(maverick, Sex,Count,-Grade)
C) tidyr::collect(maverick, Sex,Count,-Grade)
D) None of the above
答案:(A)
Spread命令是將行轉換為列,而在tidyr包或基礎包中沒有collect這一命令。因此,選項A是正確答案。
32
下列哪一命令能幫助我們將下列矢量所有Delhi換成Delhi_NCR ?
C<-c(“Delhi is”,”a great city.”,”Delhi is also”,”the capital of India.”)
A) gsub(“Delhi”,”Delhi_NCR”,C)
B) sub(“Delhi”,”Delhi_NCR”,C)
C) Both of the above
D) None of the above
答案:(C)
雖然sub命令僅能替換第一次出現的模式,但在本情境下,字符串中只出現了一個Delhi。因此,在這種情況下,gsub和sub命令都有效。所以,選項C是正確答案。
33
創建一個表示另一變量是否有缺失值的特征數據,有時對于預測模型來說非常有用。
下方數據框中的某一列有缺失值。
Feature1 | Feature2 |
B | NA |
C | 30 |
D | 40 |
E | 50 |
以下哪個命令將創建一個名為“missing”、值為1的列,其中變量“Feature2”具有缺失值?
Feature1 | Feature2 | Missing |
B | NA | 1 |
C | 30 | 0 |
D | 40 | 0 |
E | 50 | 0 |
A)
dataframe$missing<-0
dataframe$Missing[is.na(dataframe$Feature2)]<-1
B)
dataframe$missing<-0
dataframe$Missing[which(is.na(dataframe$Feature2))]<-1
C) Both of the above
D) None of the above
答案:(C)
選項C是正確答案。
34
假設有2個數據框“A”和“B”。A有34行,B有46行。運行以下命令后,所得數據框的行數是多少?
merge(A,B,all.x=TRUE)
A) 46
B) 12
C) 34
D) 80
答案:(C)
all.x表示以A為基礎進行合并,因此合并后的數據框將包含與A相同的行數。所以,選項C是正確答案。
35
加載數據集后,數據科學家通常做的第一件事就是明確數據集所包含的行數和列數。更專業地講,這是了解數據集的維度。這樣做是為了明確正在處理的數據規模,然后選擇正確的技術和工具。
以下哪個命令不能幫我們查看數據集的維度?
A) dim()
B) str()
C) View()
D) None of the above
答案:(C)
View命令能夠以類似電子表格的格式將數據集打印到控制臺,但不能幫助我們查看數據集維度。因此,選項C是正確答案。
36
有時候,我們會遇到這樣的情況,即一個數據集包含兩列,而我們希望知道其中一列的哪些元素不存在于另一列中。這在R中使用setdiff命令很容易實現。
Column1 | Column2 | Column3 | Column4 | Column5 | Column6 | |
Name1 | Alpha | 12 | 24 | 54 | 0 | Zion |
Name2 | Beta | 16 | 32 | 51 | 1 | Beta |
Name3 | Alpha | 52 | 104 | 32 | 0 | Gamma |
Name4 | Beta | 36 | 72 | 84 | 1 | Delta |
Name5 | Beta | 45 | 90 | 32 | 0 | Phi |
Name6 | Alpha | 12 | 24 | 12 | 0 | Zeta |
Name7 | Beta | 32 | 64 | 64 | 1 | Sigma |
Name8 | Alpha | 42 | 84 | 54 | 0 | Mu |
Name9 | Alpha | 56 | 112 | 31 | 1 | Eta |
Dataframe
以下命令的輸出是什么?
setdiff(dataframe$Column1,dataframe$Column6)==setdiff(dataframe$Column6,dataframe$Column1)
A) TRUE
B) FALSE
C) Can’t Say
答案:(B)
參數的順序在setdiff函數中很重要。因此,選項B是正確答案。
37
下列數據集存儲在一個名為“frame”的變量中。
A | B |
alpha | 100 |
beta | 120 |
gamma | 80 |
delta | 110 |
以下哪個命令可以為上述數據集創建條形圖。使用B列中的值來表示條形圖的高度。
A) ggplot(frame,aes(A,B))+geom_bar(stat=”identity”)
B) ggplot(frame,aes(A,B))+geom_bar(stat=”bin”)
C) ggplot(frame,aes(A,B))+geom_bar()
D) None of the above
答案:(A)
stat=“identity”將確保B列中的值成為條形圖的高度。因此,選項A是正確答案。
38
A | mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb |
Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 |
Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |
Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 |
Hornet Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 |
Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.440 | 17.02 | 0 | 0 | 3 | 2 |
Valiant | 18.1 | 6 | 225 | 105 | 2.76 | 3.460 | 20.22 | 1 | 0 | 3 | 1 |
我們希望為cyl變量創建一個堆疊條形圖,堆疊標準為“要素vs數量”。以下哪個命令將幫助我們執行此操作?
A)qplot(factor(cyl),data=mtcars,geom=”bar”,fill=factor(vs)
B) ggplot(mtcars,aes(factor(cyl),fill=factor(vs)))+geom_bar()
C) All of the above
D) None of the above
答案:(C)
選項A和B都將創建一個由“fill”參數引導的堆疊條形圖。因此,選項C是正確答案。
39
39)命令paste(1:3,c(“x”,“y”,“z”),sep=“”)的輸出是什么?
A) [1 2 3x y z]
B) [1:3x y z]
C) [1x 2y 3z]
D) None of the above
答案:(C)
40
R語言擁有豐富的資源,可以用來繪制非常高端的圖表,很多時候你想保存圖表以便向他人展示。那么,將你的圖表保存為PDF文件便是這一種選擇。
如果要將圖表保存為PDF文件,下列哪項做法正確?
A) Construct the plot on the screen device and then copy it to a PDF file with dev.copy2pdf().
B) Construct the plot on the PNG device with png(), then copy it to a PDF with dev.copy2pdf().
C) Open the PostScript device with postscript(), construct the plot, then close the device with dev.off().
D) Open the screen device with quartz(), construct the plot, and then close the device with dev.off().
答案:(A)
首先在屏幕設備上創建圖表,然后可以輕松地復制到pdf文件中。因此,選項A是正確答案。
用以上的四十道題來檢驗自己R語言的編程能力吧!祝大家編程愉快,早日脫單!
原文鏈接:https://www.analyticsvidhya.com/blog/2017/05/40-questions-r-for-data-science/
頭條創作挑戰賽# 在Excel VBA中,HTMLTitleElement對象用于表示HTML文檔中的標題標簽(<title>)。以下是6個代碼實例來解釋說明HTMLTitleElement對象的用法:
1、獲取HTML文檔中的標題內容:
Dim doc As New HTMLDocument
doc.body.innerHTML="<title>My Title</title>"
Dim title As HTMLTitleElement
Set title=doc.getElementsByTagName("title")(0)
MsgBox title.innerText ' 輸出:"My Title"
2、修改HTML文檔中的標題內容:
Dim doc As New HTMLDocument
doc.body.innerHTML="<title>Old Title</title>"
Dim title As HTMLTitleElement
Set title=doc.getElementsByTagName("title")(0)
title.innerText="New Title"
MsgBox doc.body.innerHTML ' 輸出:"<title>New Title</title>"
3、獲取HTML文檔中標題標簽的屬性:
Dim doc As New HTMLDocument
doc.body.innerHTML="<title id=""myTitle"">My Title</title>"
Dim title As HTMLTitleElement
Set title=doc.getElementsByTagName("title")(0)
MsgBox title.id ' 輸出:"myTitle"
4、判斷HTML文檔中是否存在標題標簽:
Dim doc As New HTMLDocument
doc.body.innerHTML="<h1>Heading</h1>"
Dim title As HTMLTitleElement
Set title=doc.getElementsByTagName("title")(0)
If Not title Is Nothing Then
MsgBox "標題存在"
Else
MsgBox "標題不存在"
End If
5、創建新的HTML標題標簽:
Dim doc As New HTMLDocument
Dim title As HTMLTitleElement
Set title=doc.createElement("title")
title.innerText="My Title"
doc.body.appendChild title
MsgBox doc.body.innerHTML ' 輸出:"<title>My Title</title>"
6、刪除HTML文檔中的標題標簽:
Dim doc As New HTMLDocument
doc.body.innerHTML="<title>My Title</title>"
Dim title As HTMLTitleElement
Set title=doc.getElementsByTagName("title")(0)
title.remove
MsgBox doc.body.innerHTML ' 輸出:""
請注意,上述示例中的HTMLDocument對象是Microsoft HTML Object Library中的一個對象,需要在VBA的引用中添加對"Microsoft HTML Object Library"的引用。
在使用HTMLTitleElement對象時,以下是一些需要注意的事項:
1、引用對象類型:HTMLTitleElement對象是從HTMLDocument對象獲取的,因此需要先創建和加載HTMLDocument對象,然后使用getElementsByTagName方法獲取標題標簽(<title>)的引用。
2、確保HTML文檔具有標題標簽:在使用HTMLTitleElement對象之前,需要確保HTML文檔中存在標題標簽。否則,嘗試獲取標題標簽的引用將導致錯誤。
3、處理innerText屬性:HTMLTitleElement對象具有innerText屬性,用于獲取和修改標題標簽的文本內容。可以使用innerText屬性讀取和設置標題文本。
4、處理其他屬性:HTMLTitleElement對象還可能具有其他屬性,例如id、className等。可以根據需要獲取和操作這些屬性。
5、確保正確的HTML文檔結構:在使用HTMLTitleElement對象之前,應該確保整個HTML文檔的結構正確且完整。否則,可能會導致意外的行為或錯誤。
6、錯誤處理:在使用HTMLTitleElement對象時,應該進行適當的錯誤處理,例如檢查對象是否為空,以避免可能的運行時錯誤。
7、導入所需引用:使用HTMLTitleElement對象需要導入"Microsoft HTML Object Library"引用。請確保在VBA的引用中添加了對該引用的引用。
請謹記以上注意事項,并根據實際情況適應和處理HTMLTitleElement對象。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。