首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于原子向量,r$运算符无效。

对于原子向量,r$运算符无效。
EN

Stack Overflow用户
提问于 2014-04-08 22:26:54
回答 2查看 1.7K关注 0票数 0

我有一个数据集,其中一个列仅为"#“符号。我使用以下代码删除该列。

代码语言:javascript
运行
复制
ia <- as.data.frame(sapply(ia,gsub,pattern="#",replacement=""))

但是,在此操作之后,I整数列之一已更改为因子。

我想知道发生了什么,我怎样才能避免这种情况。非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-08 22:37:44

更正确的代码版本可能如下所示:

代码语言:javascript
运行
复制
d <- data.frame(x = as.character(1:5),y = c("a","b","#","c","d"))
> d[] <- lapply(d,gsub,pattern = "#",replace = "")
> d
  x y
1 1 a
2 2 b
3 3  
4 4 c
5 5 d

但是,正如您将注意到的,这种方法永远不会实际删除违规的列。它只是将#值替换为空字符串。要删除所有#的列,可以执行如下操作:

代码语言:javascript
运行
复制
d <- data.frame(x = as.character(1:5),
                y = c("a","b","#","c","d"),
                z = rep("#",5))
> d[,!sapply(d,function(x) all(x == "#"))]
  x y
1 1 a
2 2 b
3 3 #
4 4 c
5 5 d
票数 2
EN

Stack Overflow用户

发布于 2014-04-08 22:49:13

当然,如果您想要从数据帧中删除一个违规的列,并且您知道它是哪一列,那么您可以只进行子集。所以,如果这是第一列:

代码语言:javascript
运行
复制
df <- df[,-1]

如果是后面的列,则增加。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22949407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档