2013-07-24 19 views
-1

我对R完全陌生。我尝试阅读参考文献和一些很好的介绍,但我仍然很困惑。R在不同的向量中存储不同的列以计算条件概率

我希望能做到以下几点:

我公司生产的.txt文件看起来像以下:

area,energy 
1.41155882174e-05,1.0914586287e-11 
1.46893363946e-05,5.25011714434e-11 
1.39244046855e-05,1.57904991488e-10 
1.64155121046e-05,9.0815757601e-12 
1.85202830392e-05,8.3207522281e-11 
1.5256036289e-05,4.24756620609e-10 
1.82107587343e-05,0.0 

我有下面的命令来读取R中的文件:

tbl <- read.csv("foo.txt",header=TRUE). 

生产:

> tbl 
      area  energy 
1 1.411559e-05 1.091459e-11 
2 1.468934e-05 5.250117e-11 
3 1.392440e-05 1.579050e-10 
4 1.641551e-05 9.081576e-12 
5 1.852028e-05 8.320752e-11 
6 1.525604e-05 4.247566e-10 
7 1.821076e-05 0.000000e+00 

现在我想将每列分别存储在两个不同的向量中,分别为areaenergy

我想:

area <- c(tbl$first) 
energy <- c(tbl$second) 

,但它似乎并没有工作。

我需要不同的向量(其中必须包括唯一的各列的数值数据),以便做到这一点:

> prob(energy, given = area), i.e. the conditional probability P(energy|area). 

然后绘制。你能帮我吗?

+2

为什么'tbl $ first'而不是'tbl $ area'?你为什么用'c()'包装它? – A5C1D2H2I1M1N2O1R2T1

+0

通过名称调用数据框的列:'tbl $ area'和'tbl $ energy',或者位置:'tbl [,1]'和'tbl [,2]'。无需将它们作为单独的载体存储以便稍后使用它们。 – Thomas

回答

1

正如@Ananda Mahto提到的那样,问题在于你指的是列。

以“得到”在R数据帧的一列,你有几种选择:

DataFrameName$ColumnName 
DataFrameName[,ColumnNumber] 
DataFrameName[["ColumnName"]] 

因此,要获得area,你会怎么做:

tbl$area #or 
tbl[,1] #or 
tbl[["area"]] 

随着第一个选项一般是首选(从我所见过的)。

顺便说一句,你的“最终目标”,你不需要做任何的这样:

with(tbl, prob(energy, given = area)) 

的伎俩。

+0

我建议在来到SO寻求帮助之前熟悉R FAQ,这是一个非常基础的主题。 http://cran.r-project.org/doc/manuals/R-intro.pdf –

+0

我试过了。我收到以下消息:x $ probs中的错误:$运算符对原子向量无效 –

+0

分别运行'names(x)'和class(x)' –