我想按照here所述更改数据框中列的位置。但我不知道为什么这不起作用。见下文......
df1 <- structure(list(S01 = c(51L, 82L, 72L, 79L, 2L, 86L, 33L, 56L,3L, 35L), S02 = c(49L, 33L, 59L, 68L, 35L, 45L, 22L, 18L, 67L, 79L), S03 = c(109L, 103L, 112L, 100L, 102L, 110L, 106L, 105L,107L, 111L), S04 = c(136L, 160L, 46L, 298L, 133L, 96L, 224L, 82L, 238L, 283L), S05 = c(189L, 168L, 178L, 129L, 128L, 72L,77L, 171L, 4L, 65L)), .Names = c("S01", "S02", "S03", "S04", "S05"), row.names = c(NA, -10L), class = "data.frame")
str(df1)
correctCol <- c('S01','S03','S05','S02','S04') # this will be generated by a function in turn
df.correct <- subset[df1,select=correctCol]
它会抛出以下错误:
Error in subset[df1, select = correctCol] :
object of type 'closure' is not subsettable
修改
是的,我没有看到它应该是(
而不是[
这可行
df.correct <- subset(df1,select=correctCol)
答案 0 :(得分:1)
我认为你的意思是
df.correct <- subset(df1, select = correctCol)
即。 (
)
不是方括号[
和]
。
虽然请注意,您不需要subset()
。相反,您可以直接使用[
进行子集:
> subset(df1, select = correctCol)
S01 S03 S05 S02 S04
1 51 109 189 49 136
2 82 103 168 33 160
3 72 112 178 59 46
4 79 100 129 68 298
5 2 102 128 35 133
6 86 110 72 45 96
7 33 106 77 22 224
8 56 105 171 18 82
9 3 107 4 67 238
10 35 111 65 79 283
> df1[, correctCol]
S01 S03 S05 S02 S04
1 51 109 189 49 136
2 82 103 168 33 160
3 72 112 178 59 46
4 79 100 129 68 298
5 2 102 128 35 133
6 86 110 72 45 96
7 33 106 77 22 224
8 56 105 171 18 82
9 3 107 4 67 238
10 35 111 65 79 283