令人困惑的标题,对不起,我正在尝试打印出另一个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"))
答案 0 :(得分:0)
我认为您想要的是以下内容:
sapply(DF1[, DF2[,1]], class)
这样做的第一个子集DF1只包括那些在DF2中命名的列,然后将“class”函数映射到每一列,sapply
使它返回一个向量。要获取数据集中每列的类,您需要一个映射函数,如lapply或for循环。例如,lapply(mtcars, class
为您提供每列的类。