数据框

时间:2017-03-20 04:20:04

标签: r dataframe

我有以下代码: model $ data

model$data
[[1]]
                    Category1  Category2  Category3 Category4
3555                        1          0          0         0
6447                        1          0          0         0
5523                        1          0          1         0
7550                        1          0          1         0
6330                        1          0          1         0 
2451                        1          0          0         0
4308                        1          0          1         0
8917                        0          0          0         0
4780                        1          0          1         0
6802                        1          0          1         0
2021                        1          0          0         0
5792                        1          0          1         0
5475                        1          0          1         0 
4198                        1          0          0         0
223                         1          0          1         0
4811                        1          0          1         0
678                         1          0          1         0

我正在尝试使用此公式来获取列名称的索引:

sample(colnames(model$data), 1)

但是我收到以下错误消息:

 Error in sample.int(length(x), size, replace, prob) : 
  invalid first argument 

有没有办法避免这个错误?

2 个答案:

答案 0 :(得分:2)

请注意这个?

model$data
[[1]]

[[1]]表示model$data列表,其第一个组件是数据框。要对其执行任何操作,您需要将model$data[[1]]传递给您的代码,而不是model$data

sample(colnames(model$data[[1]]), 1)

答案 1 :(得分:1)

这似乎是Random rows in dataframes in R的近似重复,应该可以作为重复关闭。但为了完整起见,对采样列索引的答案进行调整是微不足道的:

  • 您不需要生成列名称的向量,只需要生成其索引。保持简单。
  • 1:ncol(df)代替1:nrow(df)
  • 对您的col-indices进行抽样
  • 然后将这些列索引放在df[, ...]

    中逗号的RHS上

    df[, sample(ncol(df), 1)]

  • 1是因为你显然想拍摄1号样本。

  • 一个小的复杂因素是您的数据帧是model$data[[1]],因为您的模型$ data看起来像一个列表,其中一个元素是数据帧,而不是普通的数据帧。首先,分配df <- model$data[[1]]

  • 最后,如果你真的想要采样的列名和它们的索引: samp_col_idxs <- sample(ncol(df), 1) samp_col_names <- colnames(df) [samp_col_idxs]

相关问题