我是 R 语言的初学者。
我将为数据框中的所有数字列计算单样本T检验。
我的代码是
for (col_name in names(iris))
{
col_vector_class <- class(iris[col_name])
if (col_vector_class == "numberic")
{
t.test_res <- t.test(col_vector, 10)
}
}
代码无法进入t.test
行,因为class(iris[col_name])
始终返回data.frame
数据类型。
你能帮我修理一下我的代码吗?
答案 0 :(得分:1)
另一种方法是进行t检验或返回NA(或其他任何你想要的)。结果是一个列表,可以进一步处理,不包括NA,提取p值......
sapply(iris, FUN = function(x, groups) {
if (is.numeric(x)) {
t.test(x ~ groups)
} else {
NA
}
}, groups = sample(c("a", "b"), nrow(iris), replace = TRUE))
答案 1 :(得分:0)
您想在数据框选择中添加逗号
col_vector_class <- class(iris[,col_name])
这将选择名为col_name的所有行和列。不指定col_name只是对data.frame进行子集并返回仅包含该列的一个。从这里你可以做检查。但是,与字符串相比,它们不是保存类型,而是可以使用内置函数is.numeric()来检查向量是否为数字
for (col_name in names(iris))
{
if (is.numeric(iris[,col_name]))
{
t.test_res <- t.test(col_vector, 10)
}
}