For循环跳过R dataframe中的行

时间:2017-11-13 20:03:59

标签: r for-loop dataframe

我在这个小的测试数据帧中有一个for循环打印值。

      USA    Finland    China    Sweden
1     1      3         5.505962  8.310596
2     2      4        11.033347  5.425747
3     3      5        14.932882  3.272544
4     4      6        10.155517  5.980190
5     5      7        11.020148  3.692313
Total 0      0         0.000000  0.000000

此行打印出数据帧中的一行:

print(countries[2,])

结果如下:

    USA Finland    China   Sweden
2   2   4        11.03335  5.425747

基于此,我想我可以在for循环中执行相同操作并打印出所有行。循环代码:

for (i in countries[1,])
{    
    print(countries[i,])
}

然而,这导致仅打印出的每一行都没有意义。我得到的结果是:

    USA Finland    China   Sweden
1   1   3         5.505962 8.310596
    USA Finland    China   Sweden
3   3   5         14.93288 3.272544
    USA Finland    China   Sweden
5   5   7         11.02015 3.692313
    USA Finland    China   Sweden
NA  NA  NA         NA      NA

什么可能导致这种情况发生?我正在使用R studio,那么控制台日志记录是否能跟上这些价值呢?

1 个答案:

答案 0 :(得分:1)

@lmo评论建议解决方案。我想你想知道为什么会发生这种情况,所以我会试着回答这个问题。

您正在使用此代码:

var searchView: MaterialSearchView? = null
val toolbar: Toolbar = view.findViewById(R.id.toolbar) as Toolbar 

在行1: for (i in countries[1,]) 2: { 3: print(countries[i,]) 4: } 中,您正在选择1将使用的值向量。此向量恰好是数据的第一行:i。它转换为向量1 3 5.505962 8.310596 - 作为索引。

因此,在行c(1,3,5,8)中,您正在打印行3(因为您选择了索引)。它是随机的,甚至是行,但我希望你能更好地理解它。

当然,您应该使用1, 3, 5, 8df[1:5,]代替print(df)