R 使用列名初始化数据帧中的子矩阵
我有一个数据帧(100 x 25),我想填充子块[,19:25]。 有没有直接的方法,用列名代替“19:25”? (无需搜索/匹配列名等…)您可能需要R 使用列名初始化数据帧中的子矩阵,r,R,我有一个数据帧(100 x 25),我想填充子块[,19:25]。 有没有直接的方法,用列名代替“19:25”? (无需搜索/匹配列名等…)您可能需要 library(dplyr) select(df, a1:c3) # a1 b1 c1 a2 b2 c2 a3 b3 c3 #1 6 19 13 19 2 14 7 5 10 #2 5 6 8 4 12 2 5 15 8 #3 15 16 14 1 15 12 8 13 6 #4 11 17 14 11 3 13
library(dplyr)
select(df, a1:c3)
# a1 b1 c1 a2 b2 c2 a3 b3 c3
#1 6 19 13 19 2 14 7 5 10
#2 5 6 8 4 12 2 5 15 8
#3 15 16 14 1 15 12 8 13 6
#4 11 17 14 11 3 13 3 14 5
#5 14 6 7 3 5 1 19 20 1
数据
set.seed(24)
df[,19:25]
有什么问题?如果列位于前面提到的位置,这是直接的。我不知道如何不搜索它们就可以根据列名进行子集。您可能有列名“col1”、“col2”、“col3”…?@akrun:seash[,19:25]完全没有问题,但是我有很多列,我可以更容易地按名称“记住”,所以执行“a1”:“c33”而不是搜索名称、获取索引等,这是一对代码行。好吧,对于你们这些更聪明的人来说,也许更少@RomanLuštrik:确切的列名看起来像'a1','b1','c1','a2','b2','c2','a3',…,'c24',但也许这不能在R中完成,所以您可能已经回答了我的问题。谢谢:)@DusanKojic我用dplyr
发布了一个解决方案。也许这会有帮助。哇,“dplyr”听起来很刺激。我要试试看!Thnx!!
set.seed(24)
df <- as.data.frame(matrix(sample(1:20, 30*5, replace=TRUE), ncol=30))
colnames(df) <- paste0(rep(letters[1:3],10), rep(1:10,each=3))