我需要檢測我的第一行觀察是否是一行名稱。始終當我導入數據時,從spreasheet(readxl軟件包)導入爲字符列。檢測包含名稱的行
通過數據的結構,非名稱行始終包含至少8個數值。
rowNoName <- c("23-234", "Bank of Wisdom", 1:8)
rowName <- c("code of acc", "name of acc", "ac", "li", "ui", "op", "o", "p", " e", "i")
因此,在這個邏輯中,我使用隱式強制來完成我的任務。從最初是數字類元素的字符元素,強制是簡單的。但是從最初是文本字符串的元素,隱式強制失敗並拋出NA。規則是:
testName <- function(row) {
if (sum(!is.na(as.numeric(row))) >= 8) {
print("row without names")
} else {
print("row with names")
}
此功能解決這個問題,但存在另一種更正式的方式來做到這一點? 我的意思是,到避免在輸出中強制的警告消息。
> testName(row)
[1] "row with names"
Warning message:
In testName(row) : NAs introduced by coercion
請出示一個小重複的例子,並且預期輸出 – akrun
@BenBolker你的答案是非常有幫助!是的,8列的數字總是整數。 –