R 从子集数据计算的向量中的值位置

R 从子集数据计算的向量中的值位置,r,dataframe,position,subset,indices,R,Dataframe,Position,Subset,Indices,我一直在到处寻找这个问题,但还没有找到一个有用的答案: 我有一个初始数据帧: > Ty <- c("c","v","c","c","v","v","c","c") > y <- runif(8) > x1 <- runif(8) > x2 <- runif(8) > x3 <- runif(8) > df <- data.frame(Ty,y,x1,x2,x3) > df Ty y

我一直在到处寻找这个问题,但还没有找到一个有用的答案:

我有一个初始数据帧:

> Ty <- c("c","v","c","c","v","v","c","c")
> y <- runif(8)
> x1 <- runif(8)
> x2 <- runif(8)
> x3 <- runif(8)
> df <- data.frame(Ty,y,x1,x2,x3)
> df
  Ty          y        x1        x2        x3
1  c 0.20837948 0.9990686 0.6081206 0.4800121
2  v 0.98047271 0.8098506 0.3377099 0.2677663
3  c 0.11320570 0.8201667 0.6102719 0.7521935
4  c 0.78059215 0.9227924 0.8973975 0.9731085
5  v 0.42921617 0.4732868 0.5234706 0.8788630
6  v 0.88079516 0.2566475 0.9642301 0.2265124
7  c 0.08974227 0.6505454 0.8664035 0.6288450
8  c 0.99710543 0.3626812 0.2148892 0.3996121
调用
pred
后,它会显示原始位置索引(1,3,4,7,8),但当我调用所需的索引位置时,例如
pred[3]
想要得到值
0.5735144
,它会给我第三个位置的值
0.4673496

> pred[3]
        4 
0.4673496 

如何访问我需要的位置索引,从原始的
df
矩阵中获取,在这种情况下,位置
3

正如@JilberUrbina在评论中指出的那样,
predict()
返回的向量的行名/名称实际上是一个字符向量,因此
pred[“3”
应该得到您想要的

  • 如果
    p
    是一个整数,则通过
    pred[p]
    进行索引可以得到向量中的pth元素
  • 如果
    p
    是一个字符(但不是一个因子)!,
    pred[p]
    将为您提供名称与
    p
    内容匹配的元素
如果要删除按字符索引的值,必须使用以下习惯用法(相当笨拙):


i、 e.
p[-“3”]
不起作用…

pred[3]
正在第3位寻找值。相反,您所称的原始位置索引(1,3,4,7,8)不再是索引,而是向量元素的名称。也许你想要
pred[names(pred)==“3”]
得到
0.5735144
或者只是
pred[“3”]
。只要去掉那些没有排列的坏名字:
pred=unname(pred)
。对于这种情况,依赖整数行名称是不好的。谢谢大家!非常简单,但非常有用!我还有一个与这个话题相关的问题,如果你能帮我一把的话。如果我需要去掉该值
pred[“3”]
,该怎么办?我试图
pred[-“3”]
得到一个错误。是否有一种不必创建新数据框的方法?只需选中,如果
p
是一个因子,它将被视为一个整数,并使用其级别号,而不是标签。例如,
p=系数(“Datsun 710”);mtcars[p,]
返回第一行“马自达RX4”。感谢您的快速回答,非常有用。我还有一个与这个话题相关的问题,如果你能帮我一把的话。如果我需要去掉pred[“3”]的值,该怎么办?我试过pred[-“3”]得到一个错误。有没有一种不需要创建新数据帧的方法?
> reg <- lm(y~x1+x2+x3, data = df.c)
> pred <- predict(reg, df.c)
> pred
        1         3         4         7         8 
0.1020748 0.5735144 0.4673496 0.2027020 0.8433842 
> pred[3]
        4 
0.4673496 
p[names(p) != "3"]