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