如何根据数据帧的最后一行子集数据帧?

时间:2018-03-17 22:31:39

标签: r

我有一个包含600行和超过20K列的数据框。第600行包含数字8,9和10.

我需要将原始数据框子化为:

  • DATA8
  • DATA9
  • DATA10

我知道使用转置功能应该会更容易,但是稍后我需要表示图像并且没有图像匹配。问题是我试图查看是否在从原始文件中检索数据时转换数据,实际上帮助我解决了我的图像显示问题。

void search_for_file(char *dirName,char *file,int *regasire_file,int *regasire_dir){
    struct stat *metadata;
    struct dirent *dirEntry;
    struct stat bufstat;


    int ret;
    DIR *dir;

    dir = opendir(dirName);
    if (dir==NULL)
    {
        perror("Error opening the directory\n");
        exit(1);
    }


    while ((dirEntry = readdir(dir))!=NULL){
        if (strcmp(dirEntry->d_name,".")==0 || strcmp(dirEntry->d_name,"..")==0)
            continue;

        char name[1000];
        sprintf(name,"%s/%s",dirName,dirEntry->d_name);

        lstat(name,&bufstat);
        if (strcmp(dirEntry->d_name,file)==0){
            if (S_ISREG(bufstat.st_mode)){
                char path[1000];
                char new_path[1000];
                (*regasire_file)++;             
                sprintf(path,"%d",*regasire_file);
                sprintf(new_path,"%s/%s",name,path);
                int fd_dir = dirfd(dir);
                if ((symlink(dirName,new_path))==-1){
                    perror("error symlink\n");
                }


            }
            if (S_ISDIR(bufstat.st_mode)){
                (*regasire_dir)++;              
                printf("dir nr. %d \n",*regasire_dir);              
            }
        }

        if (dirEntry->d_type == DT_DIR){
            search_for_file(name,file,regasire_file,regasire_dir);
        }


    }
    closedir(dir);
}

数据框再次包含图像的0和1。最后一行包含数字8,9,10。我想过滤到data8以包含第600行为数字8的所有列。

谢谢,

1 个答案:

答案 0 :(得分:1)

(我不理解您对转置的担忧。)“[”的参数的j位置(列选择)可以是逻辑的。 (看起来你已经在考虑类似的东西,除了你选择的第785行不适合问题描述。

data8 <- data[ , data[600, ] == 8 ]
data9<- data[ , data[600, ] == 9 ]
data10<- data[ , data[600, ] == 10 ]