R语言从列表提取数组后无法访问元素的技术咨询
解决列表提取数组后无法按数组索引访问的问题
这是R语言里列表索引的常见小坑!你用A[1]提取的其实是包含第一个数组的子列表,而不是数组本身——这就是为什么B还是列表类型,没法用B[1,1,1]访问元素。
正确的提取方式
要直接取出列表里的数组元素,你需要用**双重方括号[[ ]]**来索引:
B <- A[[1]]
现在B就是数组类型了,你可以正常用B[1,1,1]来访问对应的元素啦。
补充:[ ]和[[ ]]的核心区别
A[1]:返回原列表的一个子列表(长度为1的列表),完全保留列表结构A[[1]]:直接返回列表中索引为1的元素本身,也就是你需要的那个3维数组
可以用这段代码验证效果:
array1 <- array(c(1,2,3), dim = c(3,3,3)) array2 <- array(c(10,20,30), dim = c(3,3,3)) A <- list(array1,array2) # 错误方式:得到子列表 B_wrong <- A[1] class(B_wrong) # 输出 "list" # B_wrong[1,1,1] # 执行会报错 # 正确方式:得到数组 B_right <- A[[1]] class(B_right) # 输出 "array" B_right[1,1,1] # 输出 1,正常访问
内容的提问来源于stack exchange,提问作者Branislav Kramár
相关产品推荐
相关产品推荐

