R语言:循环数据帧中的每一列以获取数据类型

时间:2016-03-22 17:20:34

标签: r dataframe

我是 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数据类型。

你能帮我修理一下我的代码吗?

2 个答案:

答案 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)
    }
}