说我有一个带有以下标题的csv(当然也有一些真实的内容):
a1,a2,b1,a3,c1,b2
如何仅选择特定列,例如以a
开头的列?
所以我只有以下标题
a1,a2,a3
使用此我可以指定范围,但我想要的列不是连续的:
myColumns = csv[c(1:3)]
答案 0 :(得分:9)
myColumns = csv[,c("a1", "a2", "a3")]
获取您正好的那些列。如果要选择所有以开头(编辑)的列:
csv[,grep("^a", names(myColumns))]
答案 1 :(得分:5)
如果您想直接从csv文件中将选定列读入R而不读取整个文件,可以使用library(data.table)
fread(file, select = grep("^a", names(fread(file, nrow = 0L))))
尝试此方法。
grep()
这只读取文件的第一行(标题),然后使用a
确定以select
开头的值的位置。然后我们在列选择参数mtcars
中使用该结果来获取我们想要的列。
让我们使用d
进行试用,只查找以## write mtcars to file
write.csv(mtcars, row.names = FALSE, quote = FALSE, file = "mtcars.csv")
## now read only the columns beginning with 'd'
DT <- fread("mtcars.csv", select = grep("^d", names(fread("mtcars.csv", nrow = 0L))))
## have a look
head(DT)
# disp drat
# 1: 160 3.90
# 2: 160 3.90
# 3: 108 3.85
# 4: 258 3.08
# 5: 360 3.15
# 6: 225 2.76
开头的列。
class GumballMachine
attr_reader :coins, :gumballs
def initialize
@coins = 0
@gumballs = 10
super
end
def dispense_gumball
@coins += 1
@gumballs -= 1
[:red, :green, :blue, :purple, :pink].sample
end
state_machine :state, initial: :ready do
event :insert_coin { transition :ready => :holding_coin }
event :request_refund { transition :holding_coin => :ready }
event :turn_crank do
dispense_gumball if @gumballs > 0
transition :holding_coin => :ready
end
end
end
答案 2 :(得分:0)
这样的事情:
> a1 <- c(0, 1, 2)
> a2 <- c(3, 4, 5)
> a3 <- c(6, 7, 8)
> csv <- data.frame(a1, a2, a3)
> csv
a1 a2 a3
1 0 3 6
2 1 4 7
3 2 5 8
> csv[,c("a1", "a3")]
a1 a3
1 0 6
2 1 7
3 2 8