相关疑难解决方法(0)

按名称删除数据框列

我有一些列要从数据框中删除.我知道我们可以使用以下内容单独删除它们:

df$x <- NULL
Run Code Online (Sandbox Code Playgroud)

但我希望用更少的命令来做到这一点.

另外,我知道我可以使用整数索引来删除列,如下所示:

df <- df[ -c(1, 3:6, 12) ]
Run Code Online (Sandbox Code Playgroud)

但我担心我的变量的相对位置可能会改变.

考虑到R的强大程度,我认为可能有一种更好的方法,就是逐一删除每一列.

r dataframe r-faq

807
推荐指数
18
解决办法
133万
查看次数

如何从data.frame中删除列?

不是'你怎么......?' 但更多'你怎么......?'

如果你有一个文件有人给你200个列,并且你想将它减少到你需要分析的几个,你怎么去做?一种解决方案是否比另一种解决方

假设我们有一个包含列col1,col2到col200的数据框.如果您只想要1-100然后125-135和150-200,您可以:

dat$col101 <- NULL
dat$col102 <- NULL # etc
Run Code Online (Sandbox Code Playgroud)

要么

dat <- dat[,c("col1","col2",...)]
Run Code Online (Sandbox Code Playgroud)

要么

dat <- dat[,c(1:100,125:135,...)] # shortest probably but I don't like this
Run Code Online (Sandbox Code Playgroud)

要么

dat <- dat[,!names(dat) %in% c("dat101","dat102",...)]
Run Code Online (Sandbox Code Playgroud)

还有什么我想念的吗?我知道这是主观的,但这是你可能会潜入并开始以一种方式进行的那些细节之一,并且当有更有效的方法时会陷入习惯.就像这个问题关于哪些.

编辑:

或者,是否有一种简单的方法来创建可行的列名称向量?name(dat)不打印它们之间的逗号,你需要在上面的代码示例中,所以如果以这种方式打印名称,你到处都有空格,必须手动输入逗号...是否有命令会给你"col1","col2","col3",...作为你的输出,这样你就可以轻松抓住你想要的东西?

r dataframe

38
推荐指数
5
解决办法
11万
查看次数

是否可以就地修改data.frame(破坏性地)?

看起来可以将列添加/删除到就地,即不将所有其他列复制到新表.data.table

是否可以用香草做到这一点data.frame

PS.我知道如何"功能性地"添加/删除列,即创建一个新框架而不修改原始框架.

r dataframe data.table

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

按名称从数据框中删除列

可能重复:
从R中的data.frame中删除整个列

是否有更好的方法从数据框中按名称删除列而不是以下?

Orange[colnames(Orange) != "Age"]
Run Code Online (Sandbox Code Playgroud)

我尝试过以下操作并收到错误:

> Orange[-"Age"]
Error in -"age" : invalid argument to unary operator
> Orange[,-"Age"]
Error in -"age" : invalid argument to unary operator
> Orange[[,-"Age"]]
Error in -"age" : invalid argument to unary operator
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

如何删除R中嵌套数据框中的列?

我知道有不同的方法来drop一个column一个data frameR

按名称删除数据框列

如何在数据框中按名称删除列

从R中的data.frame中删除整个列

现在我的问题:我有一个数据框说df400 plus文件的形式nested data frame.

        df
    [[1]]
                SignalIntensity SNR
        1   109 6.1823089314    0.8453576915
        2   110 10.1727771385   4.3837077591
        3   111 7.2922746927    1.0725751161
        4   112 8.8984671629    2.3192184908
        5   113 9.5910338232    3.7133402249
        6   114 7.9850187685    1.5008899345
        7   116 7.7893230124    1.3636655582
                       .
                       .
                       .
    [[2]]

            SignalIntensity SNR
    1   109 6.1823089314    0.8453576915
    2   110 10.1727771385   4.3837077591
    3   111 7.2922746927    1.0725751161
    4   112 8.8984671629    2.3192184908
    5   113 9.5910338232 …
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

无法使用remove()删除r中的变量

remove()过去曾成功使用该函数删除数据集和变量。然而,在过去的几天里,尽管我能够删除数据集,但我一直无法删除变量。

我不知道如何将数据上传到 stackoverflow 问题,但我可以向您展示我使用的代码和我得到的输出。调用数据集test2,变量为verbcatTC。我没有附加数据集。以下是删除此变量的四次尝试,以及每次收到的警告消息。然后我运行两行代码来向您展示该变量存在于数据集中的所有信息。

非常感谢您的帮助,如果我可以提供更多信息,请告诉我。remove()另外,如果我无法工作,我还可以使用什么其他函数来消除变量?

> remove(test2$verbcatTC)
Error in remove(test2$verbcatTC) : 
  ... must contain names or character strings

> remove("verbcatTC")
Warning message:
In remove("verbcatTC") : object 'verbcatTC' not found

> remove(verbcatTC)
Warning message:
In remove(verbcatTC) : object 'verbcatTC' not found

> remove("test2$verbcatTC")
Warning message:
In remove("test2$verbcatTC") : object 'test2$verbcatTC' not found

> head(test2$verbcatTC)
[1] Positive Positive Positive Positive Positive Positive
Levels: Negative Positive

> str(test2$verbcatTC)
Factor w/ 2 levels "Negative","Positive": 2 2 …
Run Code Online (Sandbox Code Playgroud)

r

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

从数字数据框中删除字符列

我有一个像你在这里看到的数据框.

     DRSi       TP        DOC        DN          date     Turbidity   Anions 
     158        5.9       3371       264        14/8/06      5.83    2246.02
     217        4.7       2060       428        16/8/06      6.04    1632.29
     181        10.6      1828       219        16/8/06      6.11    1005.00
     397        5.3       1027       439        16/8/06      5.74    314.19
     2204       81.2      11770      1827       15/8/06      9.64    2635.39
     307        2.9       1954       589        15/8/06      6.12    2762.02
     136        7.1       2712       157        14/8/06      5.83    2049.86
     1502       15.3      4123       959        15/8/06      6.48    2648.12
     1113       1.5       819        195        17/8/06      5.83    804.42
     329        4.1       2264       434        16/8/06      6.19    2214.89
     193        3.5 …
Run Code Online (Sandbox Code Playgroud)

r

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

基于列名字符向量的子集数据框

菜鸟问题 - 提前感谢您的耐心...

我有一个数据框:

vals <- c(1,1,1,1)
testdf <- data.frame("var1"=vals, "var2"=vals, "var3"=vals)
Run Code Online (Sandbox Code Playgroud)

我有一个变量名的字符向量:

varnames <- c("var1", "var2")
Run Code Online (Sandbox Code Playgroud)

这是一个字符向量 b/c 我用它在脚本的前面生成一个公式。

我想对数据帧进行子集化,以便排除 varnames 中的变量,例如

newDF <- subset(df, select=-varnames)
Run Code Online (Sandbox Code Playgroud)

这会产生错误,因为subset需要名称而不是字符。所以,我lapply用来将字符更改为名称:

varnames <- lapply(varnames, as.name)
Run Code Online (Sandbox Code Playgroud)

这个 lapply 函数的结果是一个命名(?)和嵌套(?)列表。

[[1]]
var1

[[2]]
var2

[[3]]
var3
Run Code Online (Sandbox Code Playgroud)

这就是我迷路的地方(我觉得自己像吃了疯狂药丸的穆加图……这让其他人感到困惑吗!?)。我可以看到每个值都已正确地从字符更改为名称,但它位于这个奇怪的嵌套结构中 - 因此当我尝试进行子集化时,出现错误。

我尝试了各种解决方案来取消嵌套和取消命名,但都没有成功。这一定是我想念的容易的东西。

作为奖励 - 有人能告诉我为什么 lapply 返回这个嵌套的命名列表而不是简单的向量是有用的吗?例如,它似乎与 Python 非常不同。谢谢你。

r

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

在方括号内使用减号

以下是来自 Datacamp 的练习。

使用 cbind() 调用包括所有三个工作表。确保urban_sheet2 和urban_sheet3 的第一列被删除,所以你没有重复的列。将结果存储在城市中。

代码:

# Add code to import data from all three sheets in urbanpop.xls
path <- "urbanpop.xls"
urban_sheet1 <- read.xls(path, sheet = 1, stringsAsFactors = FALSE)
urban_sheet2 <- read.xls(path, sheet = 2, stringsAsFactors = FALSE)
urban_sheet3 <- read.xls(path, sheet = 3, stringsAsFactors = FALSE)

# Extend the cbind() call to include urban_sheet3: urban
urban <- cbind(urban_sheet1, urban_sheet2[-1],urban_sheet3[-1])

# Remove all rows with NAs from urban: urban_clean
urban_clean<-na.omit(urban)
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么使用[-1]删除 cbind 中的第一列。是里面方括号的特殊用途cbind() …

r square-bracket dataframe

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

标签 统计

r ×9

dataframe ×6

data.table ×1

r-faq ×1

square-bracket ×1