R select 多行按条件行号
R select multiple rows by conditional row number
我有一个像这样的 R 数据框:
a<-c(1,2,3,4,5)
b<-c(6,7,8,9,10)
df<-data.frame(a,b)
colnames(df)<-c("a","b")
df
a b
1 1 6
2 2 7
3 3 8
4 4 9
5 5 10
我想获得第 a
列的第 1、2、3 和 5 行,所以 1 2 3 5
通过按行号选择行。
我已经尝试 df$a[1:3,5]
但我得到了 Error in df$a[1:3, 5] : incorrect number of dimensions
。
c(df$a[1:3],df$a[5])
起作用的是什么,但我想知道是否有更简单的方法可以用 R 实现这一点?
您的数据框有两个维度(行和列)。当您使用方括号提取值时,R 期望逗号之前的所有内容都指示所需的行,逗号之后的所有内容指示所需的列(请参阅:?[
)。因此,df[1:3,5]
表示从第 5 列开始的第 1 行到第 3 行。要将所需的行转换为单个向量,您需要连接(即 c(1:3,5)
)。这一切都在逗号之前,列指示符 1
或 "a"
将在逗号之后。因此,df[c(1:3,5), 1]
就是您所需要的。
对于替代答案(这可能更适合具有更多列的数据框),@Mamoun Benghezal 建议的 df[c(1:3, 5), "a"]
也可以完成!
我有一个像这样的 R 数据框:
a<-c(1,2,3,4,5)
b<-c(6,7,8,9,10)
df<-data.frame(a,b)
colnames(df)<-c("a","b")
df
a b
1 1 6
2 2 7
3 3 8
4 4 9
5 5 10
我想获得第 a
列的第 1、2、3 和 5 行,所以 1 2 3 5
通过按行号选择行。
我已经尝试 df$a[1:3,5]
但我得到了 Error in df$a[1:3, 5] : incorrect number of dimensions
。
c(df$a[1:3],df$a[5])
起作用的是什么,但我想知道是否有更简单的方法可以用 R 实现这一点?
您的数据框有两个维度(行和列)。当您使用方括号提取值时,R 期望逗号之前的所有内容都指示所需的行,逗号之后的所有内容指示所需的列(请参阅:?[
)。因此,df[1:3,5]
表示从第 5 列开始的第 1 行到第 3 行。要将所需的行转换为单个向量,您需要连接(即 c(1:3,5)
)。这一切都在逗号之前,列指示符 1
或 "a"
将在逗号之后。因此,df[c(1:3,5), 1]
就是您所需要的。
对于替代答案(这可能更适合具有更多列的数据框),@Mamoun Benghezal 建议的 df[c(1:3, 5), "a"]
也可以完成!