我需要检测我的第一行观察结果是否是一行名称。当我导入数据时,总是从电子表格(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