我想使用sed更改文件中的某些名称.这是文件的样子:
#! /bin/bash
SAMPLE="sample_name"
FULLSAMPLE="full_sample_name"
...
Run Code Online (Sandbox Code Playgroud)
现在我只想使用sed更改sample_name而不是full_sample_name
我试过这个
sed s/\<sample_name\>/sample_01/g ...
Run Code Online (Sandbox Code Playgroud)
我认为\ <>可以用来找到完全匹配,但是当我使用它时,没有任何改变.
添加''有助于仅更改sample_name.但是现在还有另一个问题:我的情况比上面解释的要复杂一些,因为我的sed命令嵌入在一个循环中:
while read SAMPLE
do
name=$SAMPLE
sed -e 's/\<sample_name\>/$SAMPLE/g' /path/coverage.sh > path/new_coverage.sh
done < $1
Run Code Online (Sandbox Code Playgroud)
因此,应使用附加到$ SAMPLE的值更改sample_name.但是,在运行命令时,sample_name更改为$ SAMPLE,而不是更改为附加到$ SAMPLE的值.
我想问用户多个问题.我有两种类型的问题:Y/N或文件名输入.我不知道如何把这一切都放到一个漂亮的if结构中.而且我不确定我是否也应该使用'else'语句.有人可以帮助我们吗?这是我到目前为止:
print "Do you want to import a list (Y/N)?"; # first question yes/no
my $input = <STDIN>;
chomp $input;
if ($input =~ m/^[Y]$/i){ #match Y or y
print "Give the name of the first list file:\n";
my $list1 = <STDIN>;
chomp $list1;
print "Do you want to import another gene list file (Y/N)?";
if ($input =~ m/^[Y]$/i){
print "Give the name of the second list file:\n" # can I use $input or do I need to define …Run Code Online (Sandbox Code Playgroud) 我想向列表的每个数据框添加一列,其中将两列(col1和col2)的值连接在一起
# create new column #
original.list <- lapply(original.list, cbind, new_column = c(""))
# add data to new column
new.list <- lapply(original.list, function (x) x$new_column = paste(x$col1, x$col2, sep = "_"))
Run Code Online (Sandbox Code Playgroud)
但是,这似乎是错误的,因为结果是仅包含新列的列表。
这就是我original.list的每个数据框的样子
col1 col2
name1 1
name2 2
name3 3
Run Code Online (Sandbox Code Playgroud)
这就是我的new.list的每个数据框的外观
col1 col2 new_column
name1 1 name1_1
name2 2 name2_2
name3 3 name3_3
Run Code Online (Sandbox Code Playgroud) 我有一个表(out)看起来像这样:
V1 V2 V3
A x 0
A y 1
A z 10
A a 11
A b 12
... ... ...
A c 2
A d 21
A e 22
... ... ...
A f 3
Run Code Online (Sandbox Code Playgroud)
我使用此功能基于V3对此表进行了排序
sorted.out <- out[order(out$V3), ]
Run Code Online (Sandbox Code Playgroud)
但是我希望V3中的值按数字顺序排列,如1,2,3,4,...,10,11,12 ......,而不是现在的1,10,11,12,......
我怎样才能做到这一点?
当我使用str(out)时,我的V3作为因子变量出现.我应该把它改成数字吗?
我在 R 中有一个列表:
A = list(c(1,4), 2, 3, c(1,4))
names(A) <- c("name 1", "name 2", "name 2", "name 3")
$`name 1`
[1] 1 4
$`name 2`
[1] 2
$`name 2`
[1] 3
$`name 3`
[1] 1 4
Run Code Online (Sandbox Code Playgroud)
我想组合具有相同名称的列表元素。输出看起来像这样
$`name 1`
[1] 1 4
$`name 2`
[1] 2 3
$`name 3`
[1] 1 4
Run Code Online (Sandbox Code Playgroud)
我将如何实现这一目标?
我在R中有一个数据帧.在每个数据帧中有8个变量.
我想制作一个条形图,我想根据一个特定变量中的值为条形指定不同的灰度.
这就是我制作一个条形图的方式:
barplot(x$cov, names.arg = x$exon,
xlab = x$gene[1],
ylab = "read depth" ,
border = gray.colors(???))
Run Code Online (Sandbox Code Playgroud)
变量外显子由整数组成.例如:
0 0 0 0 1 1 1 2 2 3 3 3 3 4 4 4
Run Code Online (Sandbox Code Playgroud)
所以我希望所有的酒吧$exon = 0都是一个灰色的阴影所有的酒吧$exon = 1都是另一个灰色等等......
有人可以帮我一把吗?
我有一个带有3列的制表符分隔的文本文件.
在某些列中,我要删除单个或多个空格.但我想保持每列之间的标签分隔以及换行符.
我试过了
perl -lape 's/\s+//sg
Run Code Online (Sandbox Code Playgroud)
但这会删除所有空格,也会删除制表符空格
我的文件看起来像这样
col1 col2 col3
1 test test
2 test test
3 test test
Run Code Online (Sandbox Code Playgroud)
而且我要
col1 col2 col3
1 test test
2 test test
3 test test
Run Code Online (Sandbox Code Playgroud)
所以我只想保留不同列之间的制表空间,而不是单个空格.我希望这很清楚.
我有以下向量c:
ABC-XXX
DEF-4-YYY
Run Code Online (Sandbox Code Playgroud)
我想提取最后一次出现的“-”之前的所有内容,这意味着我将保留此内容
ABC
DEF-4
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
sub([-].*, '', "DEF-4-YYY")
Run Code Online (Sandbox Code Playgroud)
但这会替换第一个“-”之后的所有内容,而应该寻找最后一个“-”。上面命令的输出是:
"DEF"
Run Code Online (Sandbox Code Playgroud)
怎么了
我有以下数据框列表
d1 <- data.frame(var1 = 10, var2 = 20, var3 = 30)
d2 <- data.frame(var4 = 40, var5 = 50, var6 = 60)
my.list <- list(d1, d2)
> my.list
[[1]]
var1 var2 var3
1 10 20 30
[[2]]
var4 var5 var6
1 40 50 60
Run Code Online (Sandbox Code Playgroud)
现在,我想向每个包含以下内容的数据框添加新行:
values <- c(0.75, 0.5, 0.25)
d1$var1 * values[1] #new second row d1
d1$var1 * values[2] #new third row d1
d1$var1 * values[3] #new fourth row d1
Run Code Online (Sandbox Code Playgroud)
需要对每个数据帧中的所有$ var变量以及列表中的所有数据帧进行此操作。
新的d1看起来像这样:
var1 var2 var3
1 10 …Run Code Online (Sandbox Code Playgroud) 我在bash脚本中有以下变量'VAR1':
VAR1 = "/path/to/file/190909_AAA_ZZZ/"
Run Code Online (Sandbox Code Playgroud)
现在,我想创建一个仅包含“ 190909”部分的变量(VAR2)。
我想通过提取以任意6位数字开头的部分(190909)直到下一个“ _”来做到这一点
如何做到这一点?
VAR2 = ${grep ... $VAR1} ???
Run Code Online (Sandbox Code Playgroud)