小编Sau*_*cia的帖子

使用as.data.frame函数为数据框指定名称

我试图将矩阵转换为数据框,并在一行中分配名称.

正如我所使用的那样,?as.data.frame有一个参数col.names对我来说似乎不起作用,我做错了吗?

as.data.frame(matrix(c(1:4), nrow=2), col.names=c("a","b"))
Run Code Online (Sandbox Code Playgroud)

输出:

   V1 V2  
1  1  3  
2  2  4  
Run Code Online (Sandbox Code Playgroud)

预期产出:

   a  b  
1  1  3  
2  2  4  
Run Code Online (Sandbox Code Playgroud)

我知道我可以稍后用`colnames(matrix)= c("a,"b)分配它,但我只是想知道是否可以在一行中完成它.(

r dataframe

10
推荐指数
1
解决办法
5430
查看次数

Prolog - 返回矩阵的第n行

我正在尝试编写一个rowN/3返回矩阵的第n个元素(在本例中为行)的谓词.例:

?- rowN([[1,2],[3,4],[5,6]], 2, R). 
R = [3,4];
No
Run Code Online (Sandbox Code Playgroud)

我正在与柜台挣扎.我试图找到一些非常相似的例子,但没有成功.到目前为止,我已经设法写了这个:

码:

rowN(L,[],[]).
rowN([],X,[]).
rowN([],[],[].
rowN([H|T],X,R) :-
    A==X,
    A is A + 1,
    rowI(T,A,H).
Run Code Online (Sandbox Code Playgroud)

counter list matrix prolog

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

如何从向量中获取唯一元素并保留其名称?

我知道有一个函数unique()可以从向量中提取唯一值。但我失去了它的名字。

前任。

vector = c("A" = 1, "B" = 2, "A" = 1, "C" = 3, "B" = 2, "D" = 3, "D" = 3)
Run Code Online (Sandbox Code Playgroud)

如果我打印,我应该看到:

A B A C B D D
1 2 1 3 2 3 3
Run Code Online (Sandbox Code Playgroud)

预期输出

A B C D
1 2 3 3
Run Code Online (Sandbox Code Playgroud)

尝试:

如果我使用:unique(vector)我只得到1 2 3

如果我使用:vector[!duplicated(vector)]我得到:

A B C 
1 2 3 
Run Code Online (Sandbox Code Playgroud)

这很接近,但"D" = 3缺少。

r unique subset

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

矩阵乘法与 Prolog

我必须编写一个谓词,该谓词product/3接收两个矩阵并在可能的情况下返回它们的矩阵乘法,否则会失败。(这意味着如果矩阵满足要求[n x p] [p x y],则返回与维度的乘法[n x y]

例子:

product(M1, M2, R)
    ?- product([[1,2],[3,4],[5,6]], [[1,1,1],[1,1,1]], M).
    M = [[3, 3, 3], [7, 7, 7], [11, 11, 11]];
    No
Run Code Online (Sandbox Code Playgroud)

为此,我有两个代码,它们索引矩阵上的第 n 行rowI,索引第 n 列columnI(我在下面的代码中解释了它们的工作原理)。

%Predicate: rowI(M, I, RI)
%Input      rowI([[1,2],[3,4],[5,6]], 2, RI).
%           RI = [3,4];

rowI([H|_],1,H):-!.
rowI([_|T],I,X) :-
    I1 is I-1,
    rowI(T,I1,X).

%        columnJ(M, J, CJ)
%Input   columnJ([[1,2],[3,4],[5,6]], 1, CJ).
%        CJ = [1,3,5];

columnJ([],_,[]).
columnJ([H|T], I, [R|X]):-
    rowI(H, I, …
Run Code Online (Sandbox Code Playgroud)

matrix prolog

4
推荐指数
1
解决办法
1598
查看次数

将函数应用于R中的数据帧列表

我需要有关如何以迭代方式管理列表的帮助.

我有以下列表list,它由几个具有相同列但行数不同的数据帧组成.例:

[[1]]
  id InpatientDays ERVisits OfficeVisits Narcotics
1  a             0        0           18         1
2  b             1        1            6         1
3  c             0        0            5         3
4  d             0        1           19         0
5  e             8        2           19         3
6  f             2        0            9         2

[[2]]
    id InpatientDays ERVisits OfficeVisits Narcotics
7   a            16        1            8         1
8   b             2        0            8         0
9   c             2        1            4         3
10  d             4        2            0         2
11  e             6        5 …
Run Code Online (Sandbox Code Playgroud)

r list list-manipulation

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

按组计算准确度

我有一个如下所示的数据框:

df<- data.frame("iteration" = c(1,1,1,1,1,1), 
    "model" = c("RF","RF","RF","SVM", "SVM","SVM"),
    "label" = c(0,0,1,0,0,1), "prediction" = c(0,1,1,0,1,1))

  iteration model label prediction
1         1    RF     0          0
2         1    RF     0          1
3         1    RF     1          1
4         1   SVM     0          0
5         1   SVM     0          1
6         1   SVM     1          1
Run Code Online (Sandbox Code Playgroud)

实际上,它有10 iterations更多的模型和每个模型的更多数据。

我想要做的基本上是获得每个模型的准确性。

所以基本上我想把它应用到每个模型组(RF,SVM):

table(df$label,df$prediction)

    0 1
  0 2 2
  1 0 2
Run Code Online (Sandbox Code Playgroud)

他们对对角线求和并除以总数:

sum(diag(table(df$label,df$prediction)))/sum(table(df$label,df$prediction))
[1] 0.6666667
Run Code Online (Sandbox Code Playgroud)

这是我可以使用的情况tapply还是dplyr派上用场?

我在这里很迷茫。

r confusion-matrix tapply dplyr

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

匹配R中的两列

我有一个大的数据集df(354903行)与名为两列df$ColumnNamedf$ColumnName.1

head(df)
       CompleteName       CompleteName.1
1   Lefebvre Arnaud Lefebvre Schuhl Anne
1.1 Lefebvre Arnaud              Abe Lyu
1.2 Lefebvre Arnaud              Abe Lyu
1.3 Lefebvre Arnaud       Louvet Nicolas
1.4 Lefebvre Arnaud   Muller Jean Michel
1.5 Lefebvre Arnaud  De Dinechin Florent
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建标签以查看天气名称是否相同。当我尝试一个小的子集时,它可以工作[如果它们相同则为1,否则为0]:

> match(df$CompleteName[1], df$CompleteName.1[1], nomatch = 0)
[1] 0
> match(df$CompleteName[1:10], df$CompleteName.1[1:10], nomatch = 0)
[1] 0 0 0 0 0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)

但是,一旦我抛出完整的列,它就会为我提供完整的不同值,这对我来说似乎毫无意义:

> match(df$CompleteName, df$CompleteName.1, nomatch = 0)
[1] 101 101 101 101 …
Run Code Online (Sandbox Code Playgroud)

string r match sapply

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