小编sah*_*ahn的帖子

按最后一个字符对列名重新排序

我的 df 具有以下 colname:

colname(df) 给出:

"SUBJID" "EoT_A"  "EoT_B"  "EoT_C"  "EoT_D"  "PR_A"   "PR_B"   "PR_C"   "PR_D"  
"PD_A"   "PD_B"   "PD_C"   "PD_D"   "CR_A"   "CR_B"   "CR_C"   "CR_D"
Run Code Online (Sandbox Code Playgroud)

我想重新排序 colname,例如:

"SUBJID" 
"EoT_A" "PR_A" "PD_A" "CR_A"
"EoT_B" "PR_B" "PD_B" "CR_B"
"EoT_C" "PR_C" "PD_C" "CR_C"
"EoT_D" "PR_D" "PD_D" "CR_D"            
Run Code Online (Sandbox Code Playgroud)

有没有一种聪明的方法可以实现这一目标?

r

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

dplyr 按列行汇总,按名称分组

让我们考虑这个简单的数据集

set.seed(12345)
df <- data.frame(a1 = rnorm(5), a2 = rnorm(5), a3 = rnorm(5), 
                 b1 = rnorm(5), b2 = rnorm(5), b3 = rnorm(5),
                 c1 = rnorm(5), c2 = rnorm(5), c3 = rnorm(5))
Run Code Online (Sandbox Code Playgroud)

看起来像

          a1         a2         a3         b1         b2         b3        c1          c2         c3
1  0.5855288 -1.8179560 -0.1162478  0.8168998  0.7796219  1.8050975 0.8118732  0.49118828  1.1285108
2  0.7094660  0.6300986  1.8173120 -0.8863575  1.4557851 -0.4816474 2.1968335 -0.32408658 -2.3803581
3 -0.1093033 -0.2761841  0.3706279 -0.3315776 -0.6443284  0.6203798 2.0491903 -1.66205024 -1.0602656
4 -0.4534972 -0.2841597  0.5202165  1.1207127 -1.5531374  0.6121235 1.6324456  1.76773385 …
Run Code Online (Sandbox Code Playgroud)

grouping r dplyr tidyselect

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

按列表过滤数据框中的列

我想从现有的数据框中生成一个新的数据框,其中根据该变量是否在单独的向量中列出(即作为行)来选择该新 df 中的列。因此,新的 df 将仅包含向量中列出的那些列。为了提高效率,我想这样做而不必手动指示这些列。

我的直觉是,这是一个非常简单的操作,但对于 R 来说,我不太确定如何解决这个问题。

r subset

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

快速汇总R数据帧中的多个列

我有一个类似的数据框mtcars,以及一个列名称的字符串向量c("mpg", "cyl", "disp", "hp", "drat"),我希望将所有列加在一起成为一个新的列.

我通常会使用类似的东西

mtcars %>% transmute(new_col = mpg + cyl + disp + hp + drat)

   new_col
1   300.90
2   300.90
3   231.65
4   398.48
5   564.85
6   356.86
7   630.51
Run Code Online (Sandbox Code Playgroud)

但是,如果您有一个存储在向量中的100个列名,这将变得非常繁琐.

所以我的问题是,有没有一种方法可以将许多列汇总在一起,列名称保存在字符串向量中?

r dataframe dplyr

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

与双引号“”相比,何时使用反引号 ' '?

到目前为止我所知道的...

1)当使用包含数字、空格或其他符号的非语法变量/列名称创建小标题时,使用反引号(因为通常只能用字母命名列,对吗?)

 tb <- tibble( 
               ': ) ' = "smile, ' ' = "space", 
               '2000' = "number", "double_quotes" = "normal_text")
Run Code Online (Sandbox Code Playgroud)

但是,当我在这里使用双引号时,小标题仍然由非语法符号/数字组成。

2) 使用双括号时,双引号用于对列名称进行子集化。

  tb[["double_quotes"]]
Run Code Online (Sandbox Code Playgroud)

在这里,当我使用单引号进行子集化时,它仍然有效。

3)当使用 $ 进行子集化时,要选择非语法名称,我必须使用单引号,但在这里,如果我使用双引号进行子集化,它也可以工作

同样,tb$": )"效果也一样好tb$': )'

那么它们实际上可以互换吗?


有趣的是,当我绘制图表时

annoying <- tibble(
  `1` = 1:10,
  `2` = `1` * 2 + rnorm(length(`1`))
)

ggplot(annoying, aes(x = `1`, y = `2`)) +
  geom_point()
Run Code Online (Sandbox Code Playgroud)

引用非语法变量时必须使用单引号,否则看起来 ggplot 将 X 和 Y 分别视为 1 和 2 的单点。还有其他类似的案例吗?

r tibble

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

按行编辑数据

我正在尝试在 R 中转换我的数据,但我无法获得我想要的列。

我的数据集如下,我想得到的列是“total”,它是D1+D2+D3+D4+D5的总和,忽略“NA”。

NR D1 D2 D3 D4 D5 全部的
一种 1 不适用 不适用 1 不适用 2
不适用 不适用 不适用 不适用 不适用 不适用
C 不适用 1 不适用 不适用 不适用 1

这可能是一个相当愚蠢的问题,但我无法理解。

我已经尝试过:

total <- NA 
total <- ifelse(D1==1, 1, total) 
total <- ifelse(D2==1, total + 1, total) 
total <- ifelse(D3==1, total + 1, total) 
total <- ifelse(D4==1, total + 1, total) 
total <- ifelse(D5==1, total + 1, total) 
Run Code Online (Sandbox Code Playgroud)

但它将我所有的行返回到“NA”

我试过:

total <- mutate(dataset, total=D1+D2+D3+D4+D5)
Run Code Online (Sandbox Code Playgroud)

但是我没有得到 D1 到 D5 …

r

3
推荐指数
2
解决办法
63
查看次数

操作系统如何检测 C 中的超出范围的分段错误?

我在学习操作系统时遇到这个问题,我真的很感兴趣操作系统如何检测数组索引是否超出范围并因此产生分段错误?

int main(){
    char* ptr0;
    ptr0[0] = 1;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码绝对会产生分段错误,因为 ptr0 没有分配任何内存。

但如果添加一行,情况就会改变。

int main(){
    char* ptr0;
    char* ptr1 = ptr0;
    ptr0[0] = 1;
}
Run Code Online (Sandbox Code Playgroud)

这段代码不会导致任何错误,即使你将ptr0[0]更改为ptr0[1000],它仍然不会导致任何分段错误。

不知道为什么这条线有这么大的力量

char* ptr1 = ptr0
Run Code Online (Sandbox Code Playgroud)

我试图反汇编这些代码,但发现的信息很少。

有人可以从内存分配的角度向我解释一下吗?多谢。

c c++

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

应用记忆使 golom 序列变慢

我正在尝试使用 C++ 来理解记忆化,并且我正在尝试用“golom 序列”做一个例子

int main(int argc, char* argv[])
{
    std::unordered_map<int, int> hashTable;

    
    int value = 7;
    
    auto start = std::chrono::high_resolution_clock::now(); 
    std::cout << golomS(4, hashTable) << std::endl;
    auto stop = std::chrono::high_resolution_clock::now();
    
    auto start1 = std::chrono::high_resolution_clock::now();
    std::cout << golom(4) << std::endl;;
    auto stop1 = std::chrono::high_resolution_clock::now();

    auto duration = std::chrono::duration_cast<std::chrono::microseconds>(stop - start);
    auto duration1 = std::chrono::duration_cast<std::chrono::microseconds>(stop1 - start1);

    std::cout << "Time taken by function 1: "
           << duration.count() << " microseconds" << std::endl;

    
    std::cout << "Time taken by function 2: "
          << …
Run Code Online (Sandbox Code Playgroud)

c++ recursion memoization

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

将列表转换为列表列表

如何将字符串列表转换a为列表b列表

a = list('A', 'B', 'C')
Run Code Online (Sandbox Code Playgroud)

并转换为

b = list(list('A'), list('B'), list('C'))
Run Code Online (Sandbox Code Playgroud)

r list

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

c中的stride是什么

C 语言中的“stride”是什么以及如何使用它?

c struct stride

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

标签 统计

r ×7

c ×2

c++ ×2

dplyr ×2

dataframe ×1

grouping ×1

list ×1

memoization ×1

recursion ×1

stride ×1

struct ×1

subset ×1

tibble ×1

tidyselect ×1