R 基于字符串值的子集数据

R 基于字符串值的子集数据,r,dataframe,R,Dataframe,我想根据索引列对我的数据帧进行子集划分;我想保留那些索引保存在myvar中的案例(例如110、111)。我不明白为什么运行此代码时收到0个观察结果: newdata <- df[ which(df$index=="myvars"), ] newdata试试看 myvars试试看 myvars您尝试执行的操作有几个基本问题 您没有使用变量“myvars”——您使用的是一个值为“myvars”的字符串。没有一行具有索引“myvars” 您正在使用的=适合一个值(例如值==

我想根据
索引
列对我的数据帧进行子集划分;我想保留那些索引保存在
myvar
中的案例(例如110、111)。我不明白为什么运行此代码时收到0个观察结果:

newdata <- df[ which(df$index=="myvars"), ]
newdata试试看

myvars试试看


myvars您尝试执行的操作有几个基本问题

  • 您没有使用变量“myvars”——您使用的是一个值为“myvars”的字符串。没有一行具有索引“myvars”
  • 您正在使用的
    =
    适合一个值(例如
    值==4
    ),但myvars中有多个值。相反,您可以在%myvars中使用
    df$index%
  • 这确实有效,但您有整数索引,并且正在使用字符串访问它们。这是不必要的,并可能导致其他地方出现问题
  • 您可能会感到困惑,因为您的示例数据非常大且复杂。测试只需要一列,而不是二十列

  • 你要做的事情有几个基本问题

  • 您没有使用变量“myvars”——您使用的是一个值为“myvars”的字符串。没有一行具有索引“myvars”
  • 您正在使用的
    =
    适合一个值(例如
    值==4
    ),但myvars中有多个值。相反,您可以在%myvars中使用
    df$index%
  • 这确实有效,但您有整数索引,并且正在使用字符串访问它们。这是不必要的,并可能导致其他地方出现问题
  • 您可能会感到困惑,因为您的示例数据非常大且复杂。测试只需要一列,而不是二十列

  • 在您的示例中,您搜索的字符串“myvars”不在data.frame中。您必须使用向量
    myvars
    。顺便说一句,如果您的df条目是数字的,那么myvars条目也必须是数字的。您必须使用向量
    myvars
    。顺便说一句,如果您的df条目是数字的,那么myvars条目也必须是数字的。
    df<-structure(list(index = c(111, 110, 101, 111), et = c(1, 1, 1, 
    1), d1_t2 = c(0, 1, 1, 1), d1_t3 = c(0, 0, 1, 1), d1_t4 = c(0, 
    1, 0, 1), d2_t1 = c(0, 0, 1, 1), d2_t2 = c(0, 1, 1, 1), d2_t3 = c(0, 
    0, 0, 1), d2_t4 = c(1, 0, 1, 1), d3_t1 = c(1, 0, 1, 1), d3_t2 = c(1, 
    1, 0, 1), d3_t3 = c(1, 0, 1, 1), d3_t4 = c(1, 1, 0, 1), d4_t1 = c(0, 
    0, 1, 1), d4_t2 = c(1, 1, 0, 1), d4_t3 = c(0, 0, 1, 1), d4_t4 = c(1, 
    0, 1, 1), d5_t1 = c(1, 0, 0, 1), d5_t2 = c(0, 1, 1, 1), d5_t3 = c(1, 
    0, 1, 1), d5_t4 = c(0, 0, 1, 1), d6_t1 = c(1, 0, 0, 1), d6_t2 = c(0, 
    0, 1, 1), d6_t3 = c(1, 0, 1, 1), d6_t4 = c(1, 0, 1, 1), d7_t1 = c(1, 
    1, 1, 1), d7_t2 = c(1, 1, 1, 1), d7_t3 = c(1, 0, 1, 1), d7_t4 = c(1, 
    0, 1, 1)), row.names = c(NA, 4L), class = "data.frame")
    
    myvars<-c("110", "111")
    
    myvars<-c(110, 111)  # <-- !! no quotes !!
    df[ which(df$index %in% myvars ), ] #also, no quotes round myvars