小编tub*_*bby的帖子

重新安排R中数据框中的列

我有一个脚本,它通过索引而不是名称来引用某些列.有没有办法让一个具有相同列的新数据集以一种适合编写脚本的原始数据框的方式重新排列?

我希望df2与下面的df1具有相同的列顺序

age = c(20,30,22,32,10)
gender = c('M','F','M','F','M')
name = c('A','B','C','D','E')

df1 = data.frame(age,name,gender)
df2 = data.frame(gender, name, age)
> df1
  age name gender
1  20    A      M
2  30    B      F
3  22    C      M
4  32    D      F
5  10    E      M
> df2
  gender name age
1      M    A  20
2      F    B  30
3      M    C  22
4      F    D  32
5      M    E  10
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

grep R 中的整个(不精确)匹配

我想匹配整个单词。如果您看到下面的内容,我希望“is”的 grep 在输出中仅显示 4,因为只有“this is a line”包含整个单词“is”

我还尝试使用 ^ 和 $ 进行搜索,如下所示,但我正在寻找与“is”完全匹配的字符串。它也可能包含其他单词,只要单词“is”作为单独的单词出现即可

> lines = c("this","this","this","this is a line")
> grep("is",lines)
[1] 1 2 3 4
> grep("^is$",lines)
integer(0)
Run Code Online (Sandbox Code Playgroud)

regex r

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

read.csv()警告:无法读取R中的csv文件

我试图在R中读取一个csv文件,read.csv给了我一个警告,因此停止从那里读取.我认为这与那里的额外报价有关.我该如何解决这个问题?

(csv文件放在下面的公共共享上以供访问)

> scoresdf = read.csv('http://aftabubuntu.cloudapp.net/trainDataEnglish.csv')
Warning message:
In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  :
  EOF within quoted string
Run Code Online (Sandbox Code Playgroud)

csv r read.csv

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

C中使用三元运算符的最大两个整数

有没有更好的方法来使用 C 中的三元运算符返回两个整数的最大值?

这就是我现在所拥有的

int max(int a, int b)
{
 int big = 0;
 big = (a>b)?a:b;

 return big;
}
Run Code Online (Sandbox Code Playgroud)

但我想写成这样

#include <stdio.h>

int main(void)
{
 printf("%d\n",fun(5,4));

 return 0;
}

int fun(int a, int b)
{
 (a>b)?(return a:return b);
}
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误

c max ternary-operator

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

包含和不添加空字符串的ArrayList行为

新创建的ArrayList不添加任何元素看起来就像是ArrayList添加了一个空字符串.

这让我觉得新创建的ArrayList即使不添加任何元素也会在其中添加默认的空string或元素.

package cracking;

import java.util.ArrayList;

public class Ask
{
    public static void main(String[] args)
    {
        ArrayList<String> al = new ArrayList<String>();
        System.out.println(al.size());//0
        System.out.println(al);//[]

        al.add("");
        System.out.println(al.size());//1
        System.out.println(al);//[]
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,ArrayList两个场景中的大小之间的差异使它们不一致,特别是因为ArrayList打印出来的两个看起来一样.

为了保持一致性,我觉得,两个中的任何一个都会很好:

  1. 刚刚创建的ArrayList的大小,即使在向其添加任何元素之前,应该显示1暗示空字符串或元素,因为即使添加到ArrayList它使它看起来相同.
  2. ArrayList不应该允许打印出新创建的,它应该只打印NULL或其他东西,而不是[]像现在显示的那样显示

java whitespace arraylist data-structures

-1
推荐指数
1
解决办法
1451
查看次数

尽管String是一个字符数组,但为什么String不能作为"按引用传递"

我理解在将数组asn参数传递给函数,并对函数内部的数组元素进行一些更改时,更改也将反映在调用函数中,因为数组直接在内存上运行(通过引用调用)

但是,为什么同样的行为不适用于字符串?因为String基本上是一个字符数组,所以我也期待Strings以同样的方式工作.

请参阅下面的代码.我将一个String(字符数组)以及一个int数组传入函数并对其进行一些更改.在main中打印这些时,我看到String保持不受影响,而反映了对数组的更改.

import java.util.Arrays;

public class TestString
{
    public static void main(String[] args)
    {
        String s = "hello";
        int[] a  = new int[5];
        Arrays.fill(a, -1);

        fun(s,a);

        System.out.println(s);
        System.out.println(a[0]);
    }

    static void fun(String s, int[] a)
    {
        s = "world";
        a[0] = 99;
    }
}
Run Code Online (Sandbox Code Playgroud)

产量

hello
99
Run Code Online (Sandbox Code Playgroud)

java arrays string pointers pass-by-reference

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