r - 组合字符向量并使用该向量的负数将行或列置零
问题描述
我有一个数据框和两个字符向量,它们具有该数据框的某些列名称,例如:
dat <- read.table(
text = "A B C D E F G H I J
A 0 1 1 1 0 1 0 1 1 0
B 1 0 0 0 1 0 1 0 0 1
C 0 0 0 1 1 0 0 0 0 0
D 1 0 1 0 0 1 0 1 0 1
E 0 1 0 1 0 1 1 0 1 0
F 0 0 1 0 0 0 1 0 0 0
G 0 1 0 1 0 0 0 0 0 0
H 1 0 1 0 0 1 0 0 0 1
I 0 1 0 1 1 0 1 0 0 0
J 1 0 1 0 0 1 0 1 0 0",
header = TRUE
)
charvec1 <- c("A","C","E")
charvec2 <- c("I","J","D")
我想将两个字符向量放在一起,并将不在该新向量中的数据帧的行和列设置为零。
我尝试执行以下操作但没有取得多大成功:
# put the two character vectors together
charvec3 <- c(t(outer(charvec1 , charvec2 , paste)))
# use the character vectors to put the column names which are not mentioned to zero
dat[-charvec3,] <- 0 # Row will be set to zero
dat[,-charvec3] <- 0 # Column will be set to zero,
有人可以向我解释如何正确执行此操作吗?
解决方案
charvec <- c(charvec1, charvec2)
dat[, !colnames(dat) %in% charvec] <- 0
dat[!rownames(dat) %in% charvec, ] <- 0
推荐阅读
- github - 使用 github 上的问题选项卡报告完全相同的错误
- python - Python json.dumps() 无法正确编码表情符号
- javascript - 仅在几秒钟内禁用在引导模式区域之外的单击
- java - 如何使用 Android 从 Firebase 迭代检索数据?
- android - CardView 未显示在片段中
- powershell - 如何使用 Powershell 脚本在 Windows 10 中更改语言/地区和语音
- javascript - 如何停止在特定区域触发焦点事件
- json - 将json的日期属性反序列化为LocalDate
- c# - 用于模糊查找的字典哈希函数
- .net - 在 Azure 函数中使用 TimerTrigger 的 MassTransit