我正在尝试为我的列中与NA对应的b列中的每一行分配一个NA值。 列位于数据框df。
中但是,当我执行以下代码时,我的所有b列都会获得NA。
我应该改变什么?
for(i in 1:nrow(df))
{
row <- df[i,]
is.na(df$`a`) <- (df$b <- NA)
}
答案 0 :(得分:1)
为此,我们可以通过创建逻辑vector
(is.na(df$a)
)来使用向量化选项,使用它来对“b”的元素进行子集并将其分配给NA
< / p>
df$b[is.na(df$a)] <- NA
如果我们使用的是data.table
,则可以将其分配(:=
)
library(data.table)
setDT(df)[is.na(a), b := NA]
答案 1 :(得分:0)
根据文档public static final String TABLE_NAME = "stopwatch"; //make a table with name
public static final String COL_1 = "ID"; //make an ID for every colomn
public static final String COL_2 = "times"; //make a 2nd colomn for data
public static final String COL_3= "date";
public DatabaseHelper(Context context) {
super(context, TABLE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) { //make the onCreate method that takes the database as input
String createTable = "CREATE TABLE " + TABLE_NAME + " ( " + COL_1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COL_2 +" TEXT" + COL_3 +" TEXT)"; //create the table with SQL statements to input the data correctly
db.execSQL(createTable); //input the SQL statements in the DB
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //make upgrade method that takes the database and the versions
db.execSQL("DROP IF TABLE EXISTS " + TABLE_NAME); //execute SQL statements drop table and which one
onCreate(db); //run through create method
}
,?is.na
是一个泛型函数,它将元素设置为is.na<-
。对于NA
的右侧,is.na(x) <- value
需要一个合适的索引向量,以便与x 一起使用。
示例:
value
因此,向量df <- data.frame(a = LETTERS[1:5], b = 1:5)
is.na(df$b) <- c(2, 4)
df
# a b
#1 A 1
#2 B NA
#3 C 3
#4 D NA
#5 E 5
的第2和第4个元素已设置为df$b
。
现在,如果NA
的相应元素也应设置为df$a
,我们可以使用:
NA
的答案和评论中了解到这一功能