从数据表创建列表,然后在循环中使用它

rks13

看来这应该是微不足道的,但我无法使其正常工作,这使我发疯。我有一个包含几列的数据表,其中包括sGEOID,地理ID。我想提取sGEOID的唯一值列表,然后使用每个值运行循环。代码无需多次运行循环,每次循环变量使用一个sGEOID值,而是运行一次循环,而循环变量使用一个多元素列表的值。我发现使循环正常工作的唯一方法是显式创建列表,而不是从数据表中的值中提取列表,这对于工作版本而言不是可行的选择。

这是代码,其中包含每次尝试的结果:

# Create simplified version of data table
dtObs = data.table(
  sGEOID = c("A","B","B",'C'),
  iVal = 1:4
)

print(dtObs)
# result
#   sGEOID iVal
#1: A 1
#2: B 2
#3: B 3
#4: C 4

# Create new data table with unique values of sGEOID
dtStates <- dtObs[, list(iCnt= .N), by = c('sGEOID')][order(sGEOID)]
print(dtStates)
# result
#   sGEOID iCnt
#1: A 1
#2: B 2
#3: C 1

# Loop through values in column of data table dtStates: FAILS
for (lasGEOID in dtStates[,1]) {
  print(lasGEOID)
  print('new line')
}
# result
# "A" "B" "C"
# "new line"

# Extract unique values into list
llsGEOIDs <- dtStates[,c('sGEOID')]
typeof(llsGEOIDs)
# result
#[1] "list"
print(llsGEOIDs)
# result
#   sGEOID
#1: A
#2: B
#3: C

# Loop through elements of list: FAILS
for (lasGEOID in llsGEOIDs) {
  print(lasGEOID)
  print('new line')
}
# result
#[1] "A" "B" "C"
#[1] "new line"

# Create list directly as list
# This is not a viable option for the real code
llsGEOIDs <- list('A','B','C')
print(llsGEOIDs)
# result
#[[1]]
#[1] "A"
#
#[[2]]
#[1] "B"
#
#[[3]]
#[1] "C"
#

# Loop through elements of list: WORKS
for (lasGEOID in llsGEOIDs) {
  #lasGEOID <- '06'
  print(lasGEOID)
  print('new line')
}
# result
#[1] "A"
#[1] "new line"
#[1] "B"
#[1] "new line"
#[1] "C"
#[1] "new line"
罗纳克·沙

dtStates[,1]仍然是data.table带有1列的列,被视为for循环中的1个对象,因此所有值都一起打印出来,您需要将这些值转换为向量。

一种简单的方法是使用[[

for (lasGEOID in dtStates[[1]]) {
   print(lasGEOID)
   print('new line')
}

#[1] "A"
#[1] "new line"
#[1] "B"
#[1] "new line"
#[1] "C"
#[1] "new line"

旁注:.N给出每个行的数量sGEOID,如果要计算唯一值,则可能要使用uniqueN

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在每个循环中创建多个数据表

来自分类Dev

使用for循环创建数据表

来自分类Dev

如何从 for 循环中的数据帧列表中获取/提取数据帧的名称以在同一个 for 循环中使用它?

来自分类Dev

SQL:在循环中使用变量来创建新表

来自分类Dev

在for循环中使用group_rows创建表

来自分类Dev

SQL:在循环中使用变量来创建新表

来自分类Dev

使用for循环在数据表中创建多个列

来自分类Dev

如何从车把循环中检索数据并在骨干模型中使用它?

来自分类Dev

从对象列表创建反向数据表

来自分类Dev

使用for循环从数据表访问数据

来自分类Dev

在Parallel.ForEach循环中更改引用的数据表

来自分类Dev

在Razor的外循环中定义一个变量,并在循环中使用它

来自分类Dev

使用printf然后在循环中使用scanf

来自分类Dev

在递归循环中使用父数据

来自分类Dev

从使用 LINQ 的变量创建数据表

来自分类Dev

如何在SSIS控制流任务中创建一个临时表,然后在VAL流任务中使用它?

来自分类Dev

如何在循环中使用addView在表布局中创建行

来自分类Dev

在VB.NET中使用LINQ从数据表填充列表(字符串)

来自分类Dev

在Office Access女士中使用VBA从SQL查询动态创建数据表

来自分类Dev

如何在循环中创建一个数组,然后在Java中循环后可以调用它?

来自分类Dev

如何在while循环中使用curl传递数据库表值?

来自分类Dev

使用R创建动态列表以在闪亮中使用它

来自分类Dev

如何传输循环迭代的值并在 R 的循环中使用它?

来自分类Dev

如何创建带有列名称的空数据表,然后将数据表追加到该表?

来自分类Dev

数据表信息未填充到循环中的所有数据网格视图

来自分类Dev

使用循环从数据库填充数据表

来自分类Dev

数据表和 For 循环

来自分类Dev

如何使用foreach循环到另一个foreach循环中遍历codeigniter中的两个不同的数据表?

来自分类Dev

从单个数据表创建数据表列表,但按天分组

Related 相关文章

  1. 1

    在每个循环中创建多个数据表

  2. 2

    使用for循环创建数据表

  3. 3

    如何从 for 循环中的数据帧列表中获取/提取数据帧的名称以在同一个 for 循环中使用它?

  4. 4

    SQL:在循环中使用变量来创建新表

  5. 5

    在for循环中使用group_rows创建表

  6. 6

    SQL:在循环中使用变量来创建新表

  7. 7

    使用for循环在数据表中创建多个列

  8. 8

    如何从车把循环中检索数据并在骨干模型中使用它?

  9. 9

    从对象列表创建反向数据表

  10. 10

    使用for循环从数据表访问数据

  11. 11

    在Parallel.ForEach循环中更改引用的数据表

  12. 12

    在Razor的外循环中定义一个变量,并在循环中使用它

  13. 13

    使用printf然后在循环中使用scanf

  14. 14

    在递归循环中使用父数据

  15. 15

    从使用 LINQ 的变量创建数据表

  16. 16

    如何在SSIS控制流任务中创建一个临时表,然后在VAL流任务中使用它?

  17. 17

    如何在循环中使用addView在表布局中创建行

  18. 18

    在VB.NET中使用LINQ从数据表填充列表(字符串)

  19. 19

    在Office Access女士中使用VBA从SQL查询动态创建数据表

  20. 20

    如何在循环中创建一个数组,然后在Java中循环后可以调用它?

  21. 21

    如何在while循环中使用curl传递数据库表值?

  22. 22

    使用R创建动态列表以在闪亮中使用它

  23. 23

    如何传输循环迭代的值并在 R 的循环中使用它?

  24. 24

    如何创建带有列名称的空数据表,然后将数据表追加到该表?

  25. 25

    数据表信息未填充到循环中的所有数据网格视图

  26. 26

    使用循环从数据库填充数据表

  27. 27

    数据表和 For 循环

  28. 28

    如何使用foreach循环到另一个foreach循环中遍历codeigniter中的两个不同的数据表?

  29. 29

    从单个数据表创建数据表列表,但按天分组

热门标签

归档