【问题标题】:Getting column values based on defined order in R根据 R 中定义的顺序获取列值
【发布时间】:2013-01-10 15:28:57
【问题描述】:

我有一个包含几列的矩阵,我想得到 在提取的特殊列上(作为向量),但根据 该矩阵中的另一列。

到目前为止,我使用的是我发现没有的 for 循环方法 很漂亮。我想有更好的方法来做这些事情。

这是一个工作示例:

# creating a example matrix with two columns
df <- data.frame(colA=c("A","B","C","D","E"),colB=(1:5))
mat <- as.matrix(df)

# my desired order
my_order <- c("C","D","A","B")

# For loop and collecting results in a vector
out <- NULL
for(i in my_order) out <- c(out,mat[mat[,1]==i,2])

print(out)

任何建议,更优雅且计算速度更快的方法的示例?

【问题讨论】:

  • 如果 my_order 中不存在值怎么办?如果 colA 中的值重复怎么办?

标签: r for-loop


【解决方案1】:

你可以使用match:

df$colB[match(my_order,df$colA)]

由于您的colB 已经被订购,只是match(my_order,df$colA) 恰好返回相同的结果,但通常您需要编制索引。

【讨论】:

    猜你喜欢
    • 2021-07-29
    • 1970-01-01
    • 2021-08-09
    • 2019-03-18
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多