【发布时间】:2016-05-05 17:37:08
【问题描述】:
令人困惑的标题,抱歉,我正在尝试打印出包含在另一个 DF 中的 DF 中每个变量的类列表。
DF1=50个不同类型的变量(Variable1、Variable2等)
DF2=15 个变量的列表(一列中的变量 1 名称、变量 2 名称、变量 3 名称等)
如何根据DF2中的名称输出DF1中变量的类?
我认为这样做可以:
class(DF1[,DF2[1,]])
但它不起作用。
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"))
【问题讨论】:
-
尝试
sapply(DF1[as.character(DF2[,1])], class)假设DF2的第一列包含所有列名(基于OP 的描述etc in one column)。但是,从代码来看,它看起来像是来自第一行。如果是这样的话,sapply(DF1[as.character(unlist(DF2[1,]))], class) -
一个简单的reproducible example 将使测试可能的解决方案变得更加容易。
-
添加了更多代码和数据
标签: r