file.names <- list.files(path, pattern="*.shp", full.names=T, recursive=FALSE)
for (m in 1:500){
Map <- readOGR(file.names[m])
}
...当你运行这个时我得到每个阵列一个长度 - 我分别期望长度分别为2,3和3
我在这里做错了什么? (其他stackoverflow Q&amp; A似乎暗示(对我来说)使用标量如上所述!
答案 0 :(得分:3)
[ ]
构造匿名数组并返回对它的引用 - 标量。因此,您要为所有三个数组分配一个标量,这是每个数组中第一个也是唯一一个元素。
最后一个也有@person
和@results
扁平化为一个列表,可能无意。
我不确定您的代码的意图,但这里是您可能想要的猜测
my @person = ("John", "Barnes");
my @results = (['Chemisty', '87'], ['French', '40'], ['Maths', '90']);
my @record = (\@person, \@results);
这些现在是数组,首先是字符串,另外两个是数组引用。
现在你可以根据需要获得大小,但丢失scalar
:当在标量context中使用数组时 - 例如,分配给标量变量 - 返回元素数。
答案 1 :(得分:3)
[ LIST ]
创建一个数组,为其分配LIST
,然后返回对该数组的引用,就像您已完成以下操作一样:
do { my @anon = ( LIST ); \@anon }
此引用是您为阵列分配的唯一内容。修正:
my @person = ( "John", "Barnes" );
my @results = ( ['Chemisty', '87'], ['French', '40'], ['Maths', '90'] );
目前还不清楚你想要@record
包含什么。它是@person
的引用还是对@results
的引用?这只是两个要素(但你说你期望3)。修正:
my @record = ( \@person, \@results );