我有一个包含600行和超过20K列的数据框。第600行包含数字8,9和10.
我需要将原始数据框子化为:
我知道使用转置功能应该会更容易,但是稍后我需要表示图像并且没有图像匹配。问题是我试图查看是否在从原始文件中检索数据时转换数据,实际上帮助我解决了我的图像显示问题。
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的所有列。
谢谢,
答案 0 :(得分:1)
(我不理解您对转置的担忧。)“[”的参数的j位置(列选择)可以是逻辑的。 (看起来你已经在考虑类似的东西,除了你选择的第785行不适合问题描述。
data8 <- data[ , data[600, ] == 8 ]
data9<- data[ , data[600, ] == 9 ]
data10<- data[ , data[600, ] == 10 ]