基于R中的DF变量列表读取DF中每个变量的类

时间:2016-05-05 17:37:08

标签: r

令人困惑的标题,对不起,我正在尝试打印出另一个DF中包含的DF中每个变量的类列表。

DF1 = 50种不同类型的变量(Variable1,Variable2等)

DF2 = 15个变量的列表(一列中的Variable1name,variable2name,variable3name等)

如何根据DF2中的名称输出DF1中变量的类?

我以为会这样做:

class(DF1[,DF2[1,]])

Butit不起作用。

DF2 [1,]打印出正确的名称但后来说它有18个等级,列出DF2中的所有其他名字......我在想这个错误吗?

目标是查看DF1中的所有列(如果它们是因子变量)并将因子的级别获取到varmap中。 DF2的数据类型为DF1

编辑:更多代码

vartype=matrix(0,nrow=nrow(DF2),ncol=1)
for (i in 1:nrow(DF2))
{
  temp=class(DF1[,DF2[i,]])
  if (temp=="Factor")
  { 
    DF2[i]=1;       
  }
}

varmap=list();
length(varmap)=nrow(DF2);
for (i in 1:nrow(DF2))
{
  if (DF2[i]=="factor")
  {
    varmap[[i]]=unique(DF1[,DF2[i]])
  }
}

一些数据:

DF1 <- data.frame(
  X = sample(1:10),
  Y = sample(c("yes", "no"), 10, replace = TRUE)
)

str(Data)
DF2=as.data.frame(c("X","Y"))

1 个答案:

答案 0 :(得分:0)

我认为您想要的是以下内容:

sapply(DF1[, DF2[,1]], class)

这样做的第一个子集DF1只包括那些在DF2中命名的列,然后将“class”函数映射到每一列,sapply使它返回一个向量。要获取数据集中每列的类,您需要一个映射函数,如lapply或for循环。例如,lapply(mtcars, class为您提供每列的类。