我有一个脚本,将CSV文件中的数据读入a data.table,然后将一列中的文本拆分为几个新列.我目前正在使用lapply和strsplit函数来执行此操作.这是一个例子:
library("data.table")
df = data.table(PREFIX = c("A_B","A_C","A_D","B_A","B_C","B_D"),
VALUE = 1:6)
dt = as.data.table(df)
# split PREFIX into new columns
dt$PX = as.character(lapply(strsplit(as.character(dt$PREFIX), split="_"), "[", 1))
dt$PY = as.character(lapply(strsplit(as.character(dt$PREFIX), split="_"), "[", 2))
dt
# PREFIX VALUE PX PY
# 1: A_B 1 A B
# 2: A_C 2 A C
# 3: A_D 3 A D
# 4: B_A 4 B A
# 5: B_C 5 B C
# 6: B_D 6 B D
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,该列 …
我有一个简单的数据框列转换,可以使用if/else循环完成,但我想知道是否有更好的方法来做到这一点.
最初的数据框是,
df <-data.frame(cbind(x=rep(10:15,3), y=0:8))
df
x y
1 10 0
2 11 1
3 12 2
4 13 3
5 14 4
6 15 5
7 10 6
8 11 7
9 12 8
10 13 0
11 14 1
12 15 2
13 10 3
14 11 4
15 12 5
16 13 6
17 14 7
18 15 8
Run Code Online (Sandbox Code Playgroud)
我需要做的是替换'y'列中的值
'0' gets replaced with '2',
'1' gets replaced with '2.2',
'2' gets replaced with '2.4',
...
... …Run Code Online (Sandbox Code Playgroud) 我有一个R脚本,可以将几个文本文件读入data.tables.我使用for循环来逐步浏览文件列表以读取每个文件,这非常有效.
dta <- data.table()
for (fname in flist) {
dt <- data.table(read.csv(fname, header=T, sep=",", comment.char="#"))
dt$FNAME <- fname
dta <-rbind(dta,dt)
}
Run Code Online (Sandbox Code Playgroud)
为了加快速度,我决定尝试使用data.table包中的fread方法.我还决定使用grep shell命令来帮助操作,
dta <- data.table()
for (fname in flist) {
dt <- fread('grep RDIST fname', header=F, sep=",")
dt$FNAME <- fname
dta <-rbind(dta,dt)
}
Run Code Online (Sandbox Code Playgroud)
但我收到一条错误消息,
grep: fname: No such file or directory
Error in fread("grep RDIST fname", header = F, sep = ",") :
File is empty: /dev/shm/file2e7efc79ba710d
Run Code Online (Sandbox Code Playgroud)
我认为问题是fread命令没有将fname变量解析为实际的文件名.如果我尝试使用实际文件名而不是变量,这很好用,
> fname
[1] "QualM_Setall_20150901_165011.txt"
> dt <- fread('grep RDIST QualM_Setall_20150901_165011.txt', sep=',', …Run Code Online (Sandbox Code Playgroud) 当我在我的工作区上运行命令“git status”时,我收到以下消息:
# On branch master
# Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
Run Code Online (Sandbox Code Playgroud)
现在,如果我运行命令“git pull”,工作区将使用原点/主文件上的文件进行更新。该命令还会在屏幕上显示被拉入以更新我的工作区的文件。
有没有办法在不实际运行“git pull”命令的情况下确定这个文件列表?