Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从R上的子集列表中提取和组织数据_R_List_Subset - Fatal编程技术网

从R上的子集列表中提取和组织数据

从R上的子集列表中提取和组织数据,r,list,subset,R,List,Subset,我花了最后几天的时间,试图用几个不同的信息来源,包括Stackoverflow上的其他问题,自己解决它,但失败了。我是一个完全的初学者,所以这可能就是为什么我在这方面如此努力的原因 我在下面创建了这些虚拟数据来说明我的原始数据是什么样子的 list1<-list(path = ".../folder1/folder2/Country_State_Species_Individual1.png", matrix1 = cbind(1:3, 1:9),

我花了最后几天的时间,试图用几个不同的信息来源,包括Stackoverflow上的其他问题,自己解决它,但失败了。我是一个完全的初学者,所以这可能就是为什么我在这方面如此努力的原因

我在下面创建了这些虚拟数据来说明我的原始数据是什么样子的

list1<-list(path = ".../folder1/folder2/Country_State_Species_Individual1.png",
            matrix1 = cbind(1:3, 1:9),
            matrix2 = cbind(1:3, 1:9),
            matrix3 = cbind(1:3, 1:9))

list2<-list(path = ".../folder1/folder2/Country_State_Species_Individual2.png",
            matrix1 = cbind(1:3, 1:9),
            matrix2 = cbind(1:3, 1:9),
            matrix3 = cbind(1:3, 1:9))

list3<-list(path = ".../folder1/folder2/Country_State_Species_Individual3.png",
            matrix1 = cbind(1:3, 1:9),
            matrix2 = cbind(1:3, 1:9),
            matrix3 = cbind(1:3, 1:9))

general_list <- list(list1, list2, list3)

list1我们循环“常规”列表,提取
matrix2
,然后从数据集中采样6行,创建一个新的
list
('out'),并使用'path'元素的
basename
重命名
list

out <- lapply(general_list, function(x) {
     x1 <- x$matrix2
     x1[sample(nrow(x1), 6, replace = FALSE),] })
names(out) <- sapply(general_list,
     function(x) tools::file_path_sans_ext(basename(x$path)))
out
#$Country_State_Species_Individual1
#     [,1] [,2]
#[1,]    3    9
#[2,]    2    2
#[3,]    1    7
#[4,]    1    4
#[5,]    3    6
#[6,]    2    8

#$Country_State_Species_Individual2
#     [,1] [,2]
#[1,]    3    3
#[2,]    1    7
#[3,]    3    9
#[4,]    2    2
#[5,]    3    6
#[6,]    1    1

#$Country_State_Species_Individual3
#     [,1] [,2]
#[1,]    3    3
#[2,]    2    2
#[3,]    1    4
#[4,]    2    5
#[5,]    1    7
#[6,]    3    6

我们循环“常规”列表,提取
matrix2
,然后从数据集中采样6行,创建一个新的
list
(“out”)并使用“path”元素的
basename
重命名
list

out <- lapply(general_list, function(x) {
     x1 <- x$matrix2
     x1[sample(nrow(x1), 6, replace = FALSE),] })
names(out) <- sapply(general_list,
     function(x) tools::file_path_sans_ext(basename(x$path)))
out
#$Country_State_Species_Individual1
#     [,1] [,2]
#[1,]    3    9
#[2,]    2    2
#[3,]    1    7
#[4,]    1    4
#[5,]    3    6
#[6,]    2    8

#$Country_State_Species_Individual2
#     [,1] [,2]
#[1,]    3    3
#[2,]    1    7
#[3,]    3    9
#[4,]    2    2
#[5,]    3    6
#[6,]    1    1

#$Country_State_Species_Individual3
#     [,1] [,2]
#[1,]    3    3
#[2,]    2    2
#[3,]    1    4
#[4,]    2    5
#[5,]    1    7
#[6,]    3    6

非常感谢,@akrun!我做得很好!现在,我将继续数据操作,以便连接来自相同个体的数据集。我认为dplyr将是一条出路。如果再过几天我还在挣扎,我就会回到这里!现在,我正在努力将对象名称的信息传输到数据帧上的新列。继续上面的例子,有没有一种方法可以生成输出,其中国家、州、个人已经插入并在每一行中被提及?@WagnerNogueira如果您想创建新列
out1,再次感谢!我用过我用过的谢谢你,@akrun!我做得很好!现在,我将继续数据操作,以便连接来自相同个体的数据集。我认为dplyr将是一条出路。如果再过几天我还在挣扎,我就会回到这里!现在,我正在努力将对象名称的信息传输到数据帧上的新列。继续上面的例子,有没有一种方法可以生成输出,其中国家、州、个人已经插入并在每一行中被提及?@WagnerNogueira如果您想创建新列
out1,再次感谢!我用过我用过的