小编Joh*_*n 的帖子

使用apple的Automator将文件名传递给shell脚本

我有一个automator脚本,我想在一个文件夹上运行.我希望脚本获取文件夹中的每个文件并在其上运行我的shell命令.Automator设置为将输入传递给stdin,但我不认为我正在下面正确使用stdin,你能帮忙吗?

for f in "$@" 
do
    java -Xmx1000m -jar /Users/myprog/myprog.jar $f 
done
Run Code Online (Sandbox Code Playgroud)

shell scripting automator

13
推荐指数
3
解决办法
3万
查看次数

R:如何替换data.frame的元素?

我正在尝试将包含"#N/A"的data.frame的元素替换为"NULL",并且我遇到了问题:

foo <- data.frame("day"= c(1, 3, 5, 7), "od" = c(0.1, "#N/A", 0.4, 0.8))

indices_of_NAs <- which(foo == "#N/A") 

replace(foo, indices_of_NAs, "NULL")
Run Code Online (Sandbox Code Playgroud)

[<-.data.frame(*tmp*,list,value ="NULL")出错:新列会在现有列之后留下空洞

我认为问题是我的索引将data.frame视为一个向量,但是替换函数以某种方式对它进行了不同的处理,但我不确定是什么问题?

replace r dataframe

13
推荐指数
2
解决办法
7万
查看次数

R:我如何在data.frame的行上使用apply并获取$ column_name?

我正在尝试使用以下示例访问$ a:

df<-data.frame(a=c("x","x","y","y"),b=c(1,2,3,4))

> df
  a b
1 x 1
2 x 2
3 y 3
4 y 4

test_fun <- function (data.frame_in) {
    print (data.frame_in[1])
    }
Run Code Online (Sandbox Code Playgroud)

如果我使用第一列的索引,我现在可以访问$ a:

apply(df,1,test_fun)

  a 
"x" 
  a 
"x" 
  a 
"y" 
  a 
"y" 
[1] "x" "x" "y" "y"
Run Code Online (Sandbox Code Playgroud)

但我无法使用$表示法访问列$ a:错误:"$运算符对原子向量无效"

test_fun_2 <- function (data.frame_in) {
    print (data.frame_in$a)
    }

>apply(df, 1, test_fun_2)
Error in data.frame_in$a : $ operator is invalid for atomic vectors
Run Code Online (Sandbox Code Playgroud)

这不可能吗?

r dataframe

11
推荐指数
3
解决办法
1万
查看次数

如何从Perl中的XML :: LibXML访问属性和元素?

我无法在Perl中使用XML :: LibXML包理解/使用名称空间.我可以成功访问元素但不能访问属性.我有以下代码访问XML文件(http://pastebin.com/f3fb9d1d0).

my $tree = $parser->parse_file($file); # parses the file contents into the new libXML object.
my $xpc = XML::LibXML::XPathContext->new($tree); 
$xpc->registerNs(microplateML => 'http://moleculardevices.com/microplateML');   
Run Code Online (Sandbox Code Playgroud)

然后我尝试访问一个名为common-name的元素和一个名为name的属性.

foreach my $camelid ($xpc->findnodes('//microplateML:species')) {
  my $latin_name = $camelid->findvalue('@name');   
  my $common_name = $camelid->findvalue('common-name');  
  print "$latin_name, $common_name" ;
}
Run Code Online (Sandbox Code Playgroud)

但只有latin-name(@name)打印出来,通用名称不是.我做错了什么,如何才能打印出通用名称?

@name在这种情况下做了什么?我认为它是一个数组,并且属性应该放在一个数组中,因为可以有多个,但是元素(如common-name)不应该是因为应该只有一个?

我一直在关注这里的例子:http ://www.xml.com/pub/a/2001/11/14/xml-libxml.html和这里:http://perl-xml.sourceforge.net/faq /#namespaces_xpath,并试图让他们的示例camel脚本使用我的命名空间,因此奇怪的命名空间.

perl xpath namespaces libxml2 xml-libxml

6
推荐指数
1
解决办法
1万
查看次数

我的Perl脚本中的findnodes语句出了什么问题?

我有一个简单的xml文件,如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<microplateDoc xmlns="http://moleculardevices.com/microplateML">
<camelids>
  <species name="Camelus bactrianus">
    <common-name>Bactrian Camel</common-name>
    <physical-characteristics>
      <mass>450 to 500 kg.</mass>
      <appearance>
  Blah blah blah
   </appearance>
    </physical-characteristics>   
  </species>
  </camelids>
 </microplateDoc>   
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下perl脚本读取物种名称:

use XML::LibXML;

my $parser = XML::LibXML->new();
my $doc = $parser->parse_file('/Users/johncumbers/Documents/7_Scripts/Perl/XML_to_MySQL/simplified_camelids.xml');
my $xc = XML::LibXML::XPathContext->new( $doc->documentElement()  );
$xc->registerNs('ns', 'http://moleculardevices.com/microplateML');

#loop through to find species nodes
my @n = $xc->findnodes('*/species');  #was */species
foreach $nod (@n) {
    print "A: ".$nod->getAttribute("name")."\n";
    my @c = $nod->findnodes('./common-name');
    }
Run Code Online (Sandbox Code Playgroud)

但我没有找到任何节点.你能帮忙告诉我为什么它不起作用吗?什么是查找perl函数的最佳网站,以便我可以尝试自己解决这个问题?如何让脚本告诉我它正在做什么,因为此刻的输出只是一无所获.非常感谢.

perl xpath libxml2

6
推荐指数
1
解决办法
3227
查看次数

如何为geom_point大小添加条件?

我正在尝试为geom_point大小添加一个条件,并在下面粘贴了示例。我希望当n_in_stat为4或更大时,geom_point的大小为2,而当n_in_stat小于4时,大小为5。我尝试将ifelse语句放入geom_point内,但这失败了。也许我不能在这里包括逻辑运算符,而我必须在data.frame中创建一个新列并将其大小设置为?

geom_point(size = ifelse(n_in_stat <4,5,2))+#尝试使用ifelse设置大小

geom_point(aes(size = n_in_stat))+#原始线性缩放

library(ggplot2)

# Create a long data.frame to store data...
growth_series = data.frame ("read_day" = c(0, 3, 9, 0, 3, 9, 0, 2, 8), 
"series_id" = c("p1s1", "p1s1", "p1s1", "p1s2", "p1s2", "p1s2", "p3s4", "p3s4", "p3s4"),
"mean_od" = c(0.6, 0.9, 1.3, 0.3, 0.6, 1.0, 0.2, 0.5, 1.2),
"sd_od" = c(0.1, 0.2, 0.2, 0.1, 0.1, 0.3, 0.04, 0.1, 0.3),
"n_in_stat" = c(8, 8, 8, 8, 7, 5, 8, 7, 2)
)

# Plot using ggplot... …
Run Code Online (Sandbox Code Playgroud)

size r scale ggplot2

6
推荐指数
1
解决办法
5424
查看次数

更新程序包并使其不会还原为原始程序包

我想升级包ggplot2:

library(ggplot2)
packageDescription("ggplot2")["Version"]
> 0.8.3
Run Code Online (Sandbox Code Playgroud)

但目前的版本是0.8.7.

我尝试了update.packages(),这似乎工作正常.但它仍然返回旧版本0.8.3.

所以我从Cran下载并安装了软件包源代码,在下载页面中显示为0.8.7.然后我通过R中的GUI菜单安装它.它返回

** building package indices ...
* DONE (ggplot2)
Run Code Online (Sandbox Code Playgroud)

然后我跑:

packageDescription("ggplot2")["Version"]
> 0.8.3
Run Code Online (Sandbox Code Playgroud)

而且我还有旧版本!

我不知道为什么这不起作用,我之前已经遇到过这个问题并且解决了它(我不记得到底是什么)但是现在又回到了旧版本!什么是最简单的方法来保持这样的包自动更新,而不是让它们回溯到较旧的包?

packages r ggplot2

6
推荐指数
1
解决办法
1万
查看次数

如何在R的ggplot中为图例添加自定义系列标签?

我有一个情节(下面粘贴的示例代码),我试图通过系列信息的自有标签添加.而不是绘制"p1s1""p1s2""p3s4",我想"治疗1""治疗2""治疗3".我使用了levels(series_id)来获取唯一的系列名称,并使用查找表来获取描述.(我认为这会按照他们绘制的顺序得到它们吗?)并且我在一个名为treatment_descriptions的向量中有这些描述.

从文档我认为我应该在这里使用一个比例,但我无法弄清楚哪一个,或如何做到这一点.类似于:scale_something(name ="Treatment Descriptions",breaks = NULL,labels = treatment_descriptions,formatter = NULL)?但这应该去哪里?

library(ggplot2)

# Create a long data.frame to store data...
growth_series = data.frame ("read_day" = c(0, 3, 9, 0, 3, 9, 0, 2, 8), 
"series_id" = c("p1s1", "p1s1", "p1s1", "p1s2", "p1s2", "p1s2", "p3s4", "p3s4", "p3s4"),
"mean_od" = c(0.6, 0.9, 1.3, 0.3, 0.6, 1.0, 0.2, 0.5, 1.2),
"sd_od" = c(0.1, 0.2, 0.2, 0.1, 0.1, 0.3, 0.04, 0.1, 0.3),
"n_in_stat" = c(8, 8, 8, 8, 7, 5, 8, 7, 2)
)

> # …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

5
推荐指数
1
解决办法
8491
查看次数

如何从A到Z打印字符列表?

在R中,如何从A到Z打印字符列表?用整数我可以说:

my_list = c(1:10)
> my_list
 [1]  1  2  3  4  5  6  7  8  9 10
Run Code Online (Sandbox Code Playgroud)

但我可以对角色做同样的事情吗?例如

my_char_list = c(A:Z)
my_char_list = c("A":"Z")
Run Code Online (Sandbox Code Playgroud)

这些不起作用,我希望输出为:"A" "B" "C" "D",或用逗号分隔.

r

5
推荐指数
2
解决办法
5278
查看次数

R:如何从ggplot2中更顺畅地删除异常值?

我有以下数据集,我试图用ggplot2绘图,它是三个实验A1,B1和C1的时间序列,每个实验有三个重复.

我想添加一个stat,它可以在返回更平滑(均值和方差?)之前检测并删除异常值.我已经编写了自己的异常函数(未显示),但我希望已经有一个函数来执行此操作,我只是没有找到它.

我从ggplot2书中的一些例子看过stat_sum_df("median_hilow",geom ="smooth"),但我不明白Hmisc的帮助文档,看它是否删除了异常值.

是否有一个函数可以在ggplot中删除这样的异常值,或者我在哪里修改我的代码以添加我自己的函数?

编辑:我刚看到这个(如何在R代码中使用异常值测试)并注意到Hadley建议使用一个强大的方法,如rlm.我正在绘制细菌生长曲线,所以我不认为线性模型是最好的,但是在这种情况下对其他模型或使用或使用稳健模型的任何建议都将受到重视.

library (ggplot2)  

data = data.frame (day = c(1,3,5,7,1,3,5,7,1,3,5,7,1,3,5,7,1,3,5,7,1,3,5,7,1,3,5,7,1,3,5,7,1,3,5,7), od = 
c(
0.1,1.0,0.5,0.7
,0.13,0.33,0.54,0.76
,0.1,0.35,0.54,0.73
,1.3,1.5,1.75,1.7
,1.3,1.3,1.0,1.6
,1.7,1.6,1.75,1.7
,2.1,2.3,2.5,2.7
,2.5,2.6,2.6,2.8
,2.3,2.5,2.8,3.8), 
series_id = c(
"A1", "A1", "A1","A1",
"A1", "A1", "A1","A1",
"A1", "A1", "A1","A1",
"B1", "B1","B1", "B1",
"B1", "B1","B1", "B1",
"B1", "B1","B1", "B1",
"C1","C1", "C1", "C1",
"C1","C1", "C1", "C1",
"C1","C1", "C1", "C1"),
replicate = c(
"A1.1","A1.1","A1.1","A1.1",
"A1.2","A1.2","A1.2","A1.2",
"A1.3","A1.3","A1.3","A1.3",
"B1.1","B1.1","B1.1","B1.1",
"B1.2","B1.2","B1.2","B1.2",
"B1.3","B1.3","B1.3","B1.3",
"C1.1","C1.1","C1.1","C1.1",
"C1.2","C1.2","C1.2","C1.2",
"C1.3","C1.3","C1.3","C1.3"))

> data
   day   od series_id replicate
1    1 0.10        A1 …
Run Code Online (Sandbox Code Playgroud)

statistics r outliers ggplot2

5
推荐指数
1
解决办法
5700
查看次数