为R中的字符串数据使用for循环创建数据帧

为R中的字符串数据使用for循环创建数据帧,r,R,我有以下数据的csv文件 我想把这些数据放在dataframe dfSubClass中。 之后,我将找到唯一的主题列表作为uniquesubject,唯一的类列表作为uniqueclassform dfSubClass。 使用uniquesubject、uniqueclass和for循环,我想创建所有主题和类的组合 我试着跟随,但不起作用 dfSubClass <- read.csv("SubjectClass.csv",header = TRUE) uniquesubject = un

我有以下数据的csv文件

我想把这些数据放在dataframe dfSubClass中。 之后,我将找到唯一的主题列表作为uniquesubject,唯一的类列表作为uniqueclassform dfSubClass。 使用uniquesubject、uniqueclass和for循环,我想创建所有主题和类的组合

我试着跟随,但不起作用

dfSubClass <- read.csv("SubjectClass.csv",header = TRUE)
uniquesubject = unique(planningItems["Subject"])
uniqueclass = unique(planningItems["Class"])
newDF <- data.frame()
for(Subject in 1:nrow(uniquesubject)){
 for(Class in 1:nrow(uniqueclass)){
  newDF = rbind(newDF,c(uniquesubject[Subject,],uniqueclass[Class,]))
  }
} 

这没有给我想要的输出,请帮助。

我建议使用expand.grid函数,它将自动生成所有组合

同样,在您的代码uniqueplanningItems[Subject]中,它将返回一个数据帧,这在本例中实际上不是一个好主意。向量会更好

这是我的密码:

uniquesubject = unique(dfSubClass$Subject)
uniqueclass = unique(dfSubClass$Class)
newDF=expand.grid(uniquesubject,uniqueclass)
uniquesubject = unique(dfSubClass$Subject)
uniqueclass = unique(dfSubClass$Class)
newDF = data.frame()
for (Subject in 1:length(uniquesubject)){
    for (Class in 1:length(uniqueclass)){
         newDF=rbind(newDF,data.frame("Subject"=uniquesubject[Subject],"Class"=uniqueclass[Class]))
    }
}
如果使用for循环,代码中的主要问题是关于rbind函数。这是我的密码:

uniquesubject = unique(dfSubClass$Subject)
uniqueclass = unique(dfSubClass$Class)
newDF=expand.grid(uniquesubject,uniqueclass)
uniquesubject = unique(dfSubClass$Subject)
uniqueclass = unique(dfSubClass$Class)
newDF = data.frame()
for (Subject in 1:length(uniquesubject)){
    for (Class in 1:length(uniqueclass)){
         newDF=rbind(newDF,data.frame("Subject"=uniquesubject[Subject],"Class"=uniqueclass[Class]))
    }
}

我认为与您的代码的主要区别在于,我在rbind中创建了一个数据帧,而不是使用c创建一个向量。这是为了确保结果是数据帧结构而不是矩阵。

欢迎使用SO!请阅读和阅读。为了展示您的数据,请使用dput,例如,将DPUTDFSUB类的结果放入您的问题中,即编辑您的问题:您好,谢谢,太年轻了,这给了我预期的输出,但除此之外,我想在内部For循环中执行一些其他操作。同样的逻辑,当我尝试C++时,我得到了预期的结果,但在R我的NeDF中,它的数值不显示字符串值,当RbDIN向量,在这种情况下,CUnjQuasuPoDist[Basic,],唯一的CuxCass[C],它将返回一个矩阵而不是一个数据框。因此,它将尝试将所有内容转换为数字。这并没有给我正确的结果,它使用all创建了newDF,我的代码也在这样做。为什么要这样做?Sry,我在for循环中犯了一个错误,它应该是1:lengthuniquesubject中的forSubject,而不是uniquesubject中的forSubject。uniqueclass的拼写相同。现在它应该可以工作了,我已经为我的项目实现了相同的逻辑,而且它工作得非常好。它也给了我预期的结果。谢谢