【问题标题】:Basic R, how to populate a vector with results from a function基本 R,如何用函数的结果填充向量
【发布时间】:2023-03-10 21:35:01
【问题描述】:

所以我有一个我执行 chull 的坐标列表。

X <- matrix(stats::rnorm(100), ncol = 2)
hpts <- chull(X)

chull 会返回类似“[1] 1 3 44 16 43 9 31 41”的内容。然后我想将 X 乘以另一个向量,以仅返回 chull 结果集中的 X 值。因此,例如 [-2.1582511,-2.1761699,-0.5796294]*[1,0,1,...] = [-2.1582511,0,-0.5796294...] 将是结果。我只是不知道如何正确填充第二个向量。

Y <- matrix(0, ncol = 1,nrow=50)   #create a vector with nothing
# how do I fill vector y with a 1 or 0 based on the results from chull what do I do next?
X[,1] * Y  
X[,2] * Y

谢谢,

【问题讨论】:

    标签: r vector convex-hull


    【解决方案1】:

    要仅返回hpts 结果集中的X 值,请使用

    > X[hpts]
    ## [1]  2.1186262  0.5038656 -0.4360200 -0.8511972 -2.6542077 -0.3451074  1.0771153
    ## [8]  2.2306497
    

    我把它读成“X 使得 hpts”,或者“X 中的 hpts 的值”

    当然,由于我的值是rnorm,X 的这些值与你的不同

    要获得表示结果的 1 和 0 向量,请使用

    > Y <- ifelse(X[,1] %in% X[hpts], 1, 0)
    > Y
    ## [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0
    ## [44] 0 1 0 0 1 0 1
    

    【讨论】:

    • 我需要一个大小为 50 的结果。 X[hpts] 的大小只有 8 对吗?
    • 如果没有 50 个值怎么办?使用“NA”或零等?
    • 零,我想要另一个只有 [1,0,1...] 的向量,如果该行号不在 chull 的结果中,则为 0。不一定非得是 1,如果你可以很容易地把实际值放在这里,那将节省几个步骤。
    • 好的,我更新了。它显示了hpts 在 X 中的位置。如果您想添加一列,我们需要做更多的工作。
    • 太好了,我做了 Y
    猜你喜欢
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多